5

Mam ciąg json, które dzielę na 4 zestawy danych, każdy zestaw danych ma swój własny RecyclerView.Adapter.Scalanie wielu RecyclerView.Adapter do użytku z pojedynczym RecyclerView (Android)

Chcę wyprowadzić wszystkie adaptery w tym samym formacie RecyclerView idealnie za pomocą programu StickyHeaders dla każdej karty.

wierzę, można to zrobić za pomocą ListViews poprzez CommonsWare za CWAC seryjnej (https://github.com/commonsguy/cwac-merge)

Wszelkie pomysły, jak to możliwe, lub powinny być wykonane z RecyclerView? Jestem programistą, więc im mniej abstrakcyjną odpowiedź, tym lepiej ;-D

Dzięki.

Odpowiedz

0

pójdę do tej biblioteki: https://github.com/martijnvdwoude/recycler-view-merge-adapter

Sprawdź w dokumentacji na stronie github na przykładach, w jaki sposób korzystać z tego w kodzie.

Wyciąg z readme:

RecyclerView myRecyclerView = (RecyclerView) view.findViewById(R.id.my_recycler_view); 

// Create new merge adapter 
RecyclerViewMergeAdapter mergeAdapter = new RecyclerViewMergeAdapter(); 

// Add any number of subadapters to merge adapter 
MyRecyclerViewSubAdapter subAdapter1 = new MyRecyclerViewSubAdapter(); 
MyRecyclerViewSubAdapter subAdapter2 = new MyRecyclerViewSubAdapter(); 

mergeAdapter.addAdapter(subAdapter1); 
mergeAdapter.addAdapter(subAdapter2); 

// Set merge adapter to RecyclerView 
myRecyclerView.setAdapter(mergeAdapter); 
0

Możesz zajrzeć GroupAdapter

GroupAdapter.Builder builder = new GroupAdapter.Builder(); 
builder.add(firstAdapter); 
builder.add(secondAdapter); 
GroupAdapter groupAdapter = builder.build(); 
recyclerView.setAdapter(groupAdapter); 
0

można osiągnąć tylko z jednego adaptera: SectionedRecyclerViewAdapter. W tej bibliotece możesz grupować swoje elementy w sekcje i możesz opcjonalnie dodawać do nich nagłówki i/lub stopki.

Najpierw należy utworzyć klasę sekcji, aby pogrupować elementy:

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); 
    } 

    public void addRow(String item) { 
     this.list.add(item); 
    } 

} 

Następnie należy skonfigurować RecyclerView ze swoimi sekcjach:

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

// Create your sections with the list of data 
MySection section1 = new MySection("Header of section 1", section1List); 
MySection section2 = new MySection("Header of section 2", section2List); 

// 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

Zrobiłem klasy, które robią dokładnie to, co u chcą https://gist.github.com/agustindev/e2faa7ef6a7b61cc0eafeeaf81e4e434

... 
    val multipleAdapter = MultipleAdapter() 
    val adapter1 = object: RecyclerView.Adapter<RecyclerView.ViewHolder>(){ ... } 
    val adapter2 = object: RecyclerView.Adapter<RecyclerView.ViewHolder>(){ ... } 
    val adapter3 = object: RecyclerView.Adapter<RecyclerView.ViewHolder>(){ ... } 
    multipleAdapter.addAdapter(adapter1) 
    multipleAdapter.addAdapter(adapter2) 
    multipleAdapter.addAdapter(adapter3) 

    recyclerView.adapter = multipleAdapter 
Powiązane problemy