5

我有一個json字符串,我分解成4個數據集,每個數據集都有它自己的RecyclerView.Adapter。合併多個RecyclerView.Adapter與單個RecyclerView(Android)一起使用

我想在每個適配器的理想情況下使用StickyHeaders在同一個RecyclerView中輸出所有適配器。

我相信這可以通過CommonsWare的CWAC合併使用列表視圖來完成(https://github.com/commonsguy/cwac-merge

任何想法,這可怎麼,還是應該用RecyclerView做什麼?我是一個成熟的開發商,所以不太抽象的迴應越好; -D

謝謝。

回答

0

我會去爲這個圖書館:https://github.com/martijnvdwoude/recycler-view-merge-adapter

檢查以瞭解如何在代碼中使用這個例子GitHub的頁面上的文檔。自述

提取物:

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

你可以看一下GroupAdapter

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

您實現與只有一個適配器:SectionedRecyclerViewAdapter。有了這個庫,你可以將你的項目分成不同的部分,你可以選擇添加頁眉和/或頁腳。

首先創建一個科類,以便將物品:

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

} 

然後你建立你的第的RecyclerView:

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

我做了一個類,做什麼ü希望 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 
相關問題