5

Ho una stringa JSON che suddivido in 4 set di dati, ogni set di dati ha il proprio RecyclerView.Adapter.Unisci più RecyclerView.Adapter per l'utilizzo con singolo RecyclerView (Android)

Desidero stampare tutti gli adattatori nello stesso RecyclerView idealmente con StickyHeaders per ciascun adattatore.

Credo che questo può essere fatto utilizzando ListViews via di CommonsWare CWAC-merge (https://github.com/commonsguy/cwac-merge)

Tutte le idee su come questo può, o dovrebbe essere fatto con RecyclerView? Sono uno sviluppatore di amature quindi meno la risposta è astratta meglio MrGreen

Grazie.

risposta

0

vorrei andare per questa libreria: https://github.com/martijnvdwoude/recycler-view-merge-adapter

Consultare la documentazione sulla pagina Github per esempi su come utilizzare questo nel codice.

estratto dal 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

si può guardare GroupAdapter

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

a raggiungere questo obiettivo con una sola scheda: SectionedRecyclerViewAdapter. Con questa libreria puoi raggruppare i tuoi articoli in sezioni e puoi facoltativamente aggiungere intestazioni e/o piè di pagina.

prima creare una classe sezione di raggruppare le voci:

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

} 

Poi si imposta la RecyclerView con le Sezioni:

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

ho fatto una classe che fanno esattamente quello che u vuole 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