Ich muss mehrere RecyclerViews programmatisch zu einem Fragment hinzufügen. Ich habe es geschafft, einen RecyclerView mit XML-Layout (unten) einzubauen, und es funktioniert gut, aber wenn ich versuche, überhaupt irgendwelche Programme hinzuzufügen, erscheint nicht einmal einer in der Fragmentansicht, obwohl die zurückgegebenen RecyclerViews nicht null sind. Da meine Datenquelle Web-API-gesteuert ist, kann ich keine bestimmte Anzahl von RecyclerViews in einem XML-Layout hinzufügen, da sich die Anzahl von Zeit zu Zeit ändert, daher muss sie programmatisch durchgeführt werden. Ich habe verschiedene Methoden ausprobiert, aber alle Ergebnisse sind gleich, zB: kein RecyclerView. Ich muss auch TextViews über jedem RecyclerView als Header hinzufügen, was ich bereits getan habe und sie funktionieren perfekt, aber sind aus dem unten stehenden Code entfernt, um es einfacher zu verdauen. Alles, was ich tun muss, um mein Projekt zu beenden, ist das Hinzufügen der mehreren RecyclerViews. Ich hoffe, dass jemand helfen kann?Android: Programmgesteuertes Hinzufügen mehrerer RecyclerViews in einem Fragment
Fragment:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
{
svv = new ScrollView(getActivity());
svv.setLayoutParams(new ScrollView.LayoutParams(ScrollView.LayoutParams.MATCH_PARENT, ScrollView.LayoutParams.WRAP_CONTENT));
linLayout = new LinearLayout(getActivity());
linLayout.setOrientation(LinearLayout.VERTICAL);
linLayoutParam = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
View rootView = inflater.inflate(R.layout.fragment_root, container, false);
HorizontalScrollView svh;
RecyclerView itemsListing;
int top = 100;
for(int i = 0; i < itemCount; i++) {
String strSubURL = myListItem.myListUrls.get(i).toString();
sharedData.setCurrMyURL(String.valueOf(strSubURL));
// Below is where the problems start
// This works fine but only provides one recyclerview
//itemsListing = (RecyclerView) rootView.findViewById(R.id.items_listing);
// This does not work at all, showing zero recyclerviews even though the views are not null and are therefore actually created
itemsListing = new RecyclerView(inflater.getContext());
itemsListing.setPadding(0, top, 0, 0);
mLayoutManager = new LinearLayoutManager(itemsListing.getContext(), LinearLayoutManager.HORIZONTAL, false);
itemsListing.setLayoutManager(mLayoutManager);
mAdapter = new ItemsListingAdapter(mItems, this);
itemsListing.setAdapter(mAdapter);
svh = new HorizontalScrollView(getActivity());
svh.setPadding(0, top, 0, 0);
top=top+400;
}
svv.addView(linLayout);
RelativeLayout mainLayout = (RelativeLayout) rootView.findViewById(R.id.item_layout);
mainLayout.addView(svv);
return rootView;
}
XML Layout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/item_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="#000000"
tools:context="com.myco.myapp.items.listing.ItemsListingListingFragment">
<android.support.v7.widget.RecyclerView
android:id="@+id/items_listing"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
Ich verstehe nicht, warum Sie:
Dann Sie die RecyclerView mit den Abschnitten einrichten muss es tun: Hier ist eine Lösung, implementieren Sie eine endliche Anzahl von Recyclerviews und jede Recyclerview Zeile enthält eine andere Recyclerview. So, jetzt können Sie so viele Recyclerview-Elemente anzeigen, wie Sie möchten – suku
Hallo @ suku, danke für Ihre Antwort, obwohl ich es überhaupt nicht verstehe! Ich habe eine Web-API, die Sammlungen kategorisiert, und jede Sammlung hat eine Kopfzeile. Diese Sammlungen sind dynamisch und die Anzahl von ihnen, Elemente in ihnen und Überschriften werden regelmäßig geändert. In iOS verwende ich programmatisch erstellte Collection-Ansichten mit Header-Labels, und das funktioniert perfekt. In Android habe ich auch statische XML-Recycler-Ansichten geschrieben, in denen sich die Sammlungen nicht ändern und wieder funktionieren sie einwandfrei. Wollen Sie also sagen, dass ich programmatisch erstellte Recycler-Ansichten in einer für xml deklarierten Recycler-Ansicht verschachteln kann? – partynose
Jetzt verstehe ich, was Sie versuchen zu tun. überprüfe meine Antwort aus – suku