2016-03-21 9 views
1

erstellen Ich möchte Gruppenkopf in Recyclerview festlegen, was bedeutet, ich habe eine API, die JSON-Objekte basierend auf Lektionen zum Beispiel enthält Lektion 1 enthält mehr als 3 Elemente Lektion 2 enthält 4 Elemente.Ich bereits Antwort von API erhalten und in RecyclerView wie folgt angezeigt.Wie man Gruppenelemente in Recyclerview mit Header

Lesson 1: 
Lesson 1:Random Numbers 
Lesson 1:Complex Numbers 
Lesson 1:Matrix 

-

Lesson 2: 
Lesson 2:Algebra 
Lesson 2:Differentiation 
Lesson 2:Integration 

Mag ich in recyclerview .Ich angezeigt werden soll, um Gruppenkopf-Display wie

-

Lesson 2: 
Algebra 
Differentiation 
Integration 

wollen Kopf- und Gruppe setzen Die Artikel helfen mir bitte

+0

Sie können ExpandableListView verwenden um die Kopfzeile zu gruppieren, oder Sie müssen Ihren eigenen RecycleView-Adapter entwerfen. –

+0

Ich muss ohne expandableListview verwenden – user3374231

+0

Ich habe so etwas schon einmal gemacht, versuchen: http://bignerdranch.github.io/expandable-recycler-view/ –

Antwort

2

Mit der Bibliothek SectionedRecyclerViewAdapter Sie können Gruppe der Objekte in den Abschnitten und einen Header zu jedem Abschnitt hinzufügen:

class MySection extends StatelessSection { 

    String title; 
    List<String> list; 

    public MySection(String title, List<String> list) { 
     // call constructor with layout resources for this Section header, footer and items 
     super(R.layout.section_header, R.layout.section_footer, R.layout.section_item); 

     this.title = title; 
     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)); 
    } 

    @Override 
    public RecyclerView.ViewHolder getHeaderViewHolder(View view) { 
     return new SimpleHeaderViewHolder(view); 
    } 

    @Override 
    public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder) { 
     MyHeaderViewHolder headerHolder = (MyHeaderViewHolder) holder; 

     // bind your header view here 
     headerHolder.tvItem.setText(title); 
    } 
} 

Dann Sie die RecyclerView mit den Abschnitten ein:

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

MySection lesson1Section = new MySection("Lesson 1", lesson1List); 
MySection lesson2Section = new MySection("Lesson 2", lesson2List); 

// Add your Sections 
sectionAdapter.addSection(lesson1Section); 
sectionAdapter.addSection(lesson2Section); 

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

Ist es möglich, das mit zu tun eine nicht festgelegte Anzahl von Abschnitten? –

+0

ja, einfach durch Ihre Sektionen Liste durchlaufen und sie dem Adapter hinzufügen – Gustavo

Verwandte Themen