2016-05-19 3 views
0

Ich habe eine Recyclerview mit einer Liste mit zwei verschiedenen Datenformaten eingerichtet.Recyclerview mit einem scrollenden Header (wie facebook laves list)

Ich möchte das Format der Facebook-Einladungsliste replizieren, wo die erste Ansicht in der Recycleransicht eine Kopfzeile ist (Freundschaftsanfragen im Facebook-Fall), die erste Datengruppe wird unter dieser Kopfzeile und dann als zweite Datenansicht angezeigt Format kommt in Sicht (Leute, die Sie vielleicht in der Facebook-Fall kennen) eine neue Kopfzeile wird scrollen und ersetzen diese erste Kopfzeile und wieder die zweite Reihe von Daten wird dann unter dieser zweiten Kopfzeile scrollen.

Ich habe die Recyclerview-Setup mit beiden Datensätze und Wechselansichten, aber irgendwelche Ideen, wie man den "dynamischen Header-Effekt" wie Facebook implementieren?

Danke.

Antwort

1

Sie können es mit dieser library erreichen. Siehe das Bild unten:

enter image description here

zunächst eine Section-Klasse erstellen:

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_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 stellen Sie die RecyclerView mit Sections:

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

// Create your sections with the list of data for each year 
MySection section1 = new MySection("Header 1", section1DataList); 
MySection section2 = new MySection("Header 2", section2DataList); 

// Add your Sections to the adapter 
sectionAdapter.addSection(section1); 
sectionAdapter.addSection(section2); 

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

ausgezeichnet, ich gebe diese Geh jetzt. – ScottishUser

Verwandte Themen