2016-04-02 18 views
0

Ich möchte die Liste anzuzeigen, wie pro Bild für das i-Recycler Ansicht bin mit und innerhalb jeder Zeile für Zeile seiner einfachen .aber zeigt i viele ZeilenRecyclerView Architektur - onBindViewHolder verschachtelten Daten

sagen

i have 10 rows and each row has different row inside 

so 1 row have 3 rows where as 2nd have 2 as on 

    so what is best way to do this 
zu zeigen wollen

ist es möglich, dass wir noch eine weitere Listenansicht innerhalb dieser Zeile haben können? oder innerhalb onBindViewHolder muss ich manuell Schleife und Layout

bearbeiten aufblasen: - , wenn ich diese versuche immer schlurft

@Override 
public void onBindViewHolder(final RecyclerViewHolder holder, int position) { 

    for (int i = 0; i < position; i++) { 
     View c = ((Activity) mContext).getLayoutInflater().inflate(R.layout.row2, null); 

// ((Textview) c.findViewById (R.id. mis)). setText (data.get (position) + "");

 holder.inner.addView(c); 
    } 
    holder.n.setText(position+""); 
    holder.itemView.setTag(position); 

} 

Bild wie folgt Details

+1

Verwendung ExpandableRecyclerview. Überprüfen Sie https://github.com/bignerdranch/expandable-recycler-view –

+0

können wir irgendeine Standardfunktion für dasselbe haben? – andro

Antwort

0

Ja Sie recyclerview innen Recycler Ansicht verwenden können, müssen nur separaten Adapter dafür zu halten.

Oder in diesem Fall können Sie auch erweiterbare Listenansicht verwenden, die in diesem Fall viel einfacher zu verwenden ist.

+0

ecyclerview innerhalb Recycler Ansicht geben Scroll Isuue – andro

0

Wenn in Ihrem Fall, Sie nicht viele Zeilen haben, können Sie diese anwenden:

Verwenden NestedScrollview und fügen Sie 2 RecyclerViews im Inneren.

Wenn Sie eine bestimmte Anzahl von Zeilen wie 2-3 haben, wird es einfach zu implementieren sein.

layout_behavior zu Ihrem RecyclerViews hinzufügen wie folgt:

<android.support.v7.widget.RecyclerView 
    android:id="@+id/myRecyclerView" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

und wickeln Inhalt für Layouthöhe wichtig ist.

android:layout_height="wrap_content" 

Und zuletzt, sollten Sie diese Erweiterung, so blättern nur für NestedScrollView

myRecyclerView.setNestedScrollingEnabled(false); 

Wenn Sie viele Elemente, Einzel RecyclerView mit mehreren Arten von viewholders haben funktioniert.

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { 
private final int TYPE_MAIN = 0; 
private final int TYPE_SUB = 1; 
private ArrayList<Object> dataSet; 

class ViewHolderMain extends RecyclerView.ViewHolder { 
    ... 
} 

class ViewHolderSub extends RecyclerView.ViewHolder { 
    ... 
} 

@Override 
public int getItemViewType(int position) { 
    if(dataSet.get(position) instance of MainRowObject){ 
     return TYPE_MAIN; 
    }else{ 
     return TYPE_SUB; 
    } 

} 

@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    switch (viewType) { 
     case TYPE_MAIN: return new ViewHolderMain(...); 
     case TYPE_SUB: return new ViewHolderSub(...); 
     ... 
    } 
} 
} 
+0

Hauptreihe kann eine beliebige Anzahl sowie Unterreihe kann eine beliebige Anzahl sein – andro

+0

@andro als dies nicht verwenden. Entschuldigung, ich nahm an, dass Sie maximal 2-3 Reihen haben. Wenn Sie viele Zeilen haben, wird mehr als 10 diese Struktur den Recycling auf Ihrer Liste deaktivieren. Dies beeinträchtigt die Leistung. Ich verwende dies in einer meiner Apps, die eine bestimmte Anzahl von Zeilen wie 5 haben. –

+0

oh jede andere Alternative – andro

0

Mit der Bibliothek SectionedRecyclerViewAdapter Sie Gruppe können Ihre Artikel in Sektionen:

class MySection extends StatelessSection { 

    List<String> list; 

    public MySection(List<String> list) { 
     // call constructor with layout resource for this Section items 
     super(R.layout.section_item); 

     this.list = list; 
    } 

    @Override 
    public int getContentItemsTotal() { 
     return list.size(); // number of items of this section 
    } 

    @Override 
    public RecyclerView.ViewHolder getItemViewHolder(View view) { 
     // return a custom instance of ViewHolder for the items of this section 
     return new MyItemViewHolder(view); 
    } 

    @Override 
    public void onBindItemViewHolder(RecyclerView.ViewHolder holder, int position) { 
     MyItemViewHolder itemHolder = (MyItemViewHolder) holder; 

     // bind your view here 
     itemHolder.tvItem.setText(list.get(position)); 
    } 
} 

Dann stellen Sie die RecyclerView mit Abschnitten auf:

// Create an instance of SectionedRecyclerViewAdapter 
SectionedRecyclerViewAdapter sectionAdapter = new SectionedRecyclerViewAdapter(); 

// Create your sections with the list of data per row 
MySection row1Section = new MySection(data1List); 
MySection row2Section = new MySection(data2List); 

// Add your Sections to the adapter 
sectionAdapter.addSection(row1Section); 
sectionAdapter.addSection(row2Section); 

// Set up your RecyclerView with the SectionedRecyclerViewAdapter 
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview); 
recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); 
recyclerView.setAdapter(sectionAdapter); 
Verwandte Themen