合并多个RecyclerView.Adapter以与单个RecyclerView(Android)一起使用

wri*_*rik 7 merge android adapter commonsware-cwac android-recyclerview

我有一个json字符串,我分成4个数据集,每个数据集都有自己的RecyclerView.Adapter.

我想在每个适配器上使用StickyHeader在同一个RecyclerView中输出所有适配器.

我相信这可以通过CommonsWare的CWAC合并使用ListViews来完成(https://github.com/commonsguy/cwac-merge)

有关如何使用RecyclerView或应该如何使用RecyclerView的任何想法?我是一个不成熟的开发人员,所以响应越不抽象越好;-D

谢谢.

Erf*_*tfi 6

在Recyclerview 小部件的新更新中,您可以使用MergeAdapter

import androidx.recyclerview.widget.MergeAdapter
Run Code Online (Sandbox Code Playgroud)

实例化适配器:

 private val mfirstAdapter = FirstAdapter()
 private val mSecondAdapter = SecondAdapter()

 // here is MergeAdapter class
 private val adapter = MergeAdapter(mfirstAdapter , mSecondAdapter )
Run Code Online (Sandbox Code Playgroud)

然后用法:

 binding.recycler.adapter = adapter
Run Code Online (Sandbox Code Playgroud)

如何更新适配器:(如果使用diffUtils,则使用.submitList,否则使用no​​tifyDataSetChaned())

  mfirstAdapter.submitList(myDataArrayList.subList(0, 10))
  mSecondAdapter.submitList(myDataArrayList.subList(10, list.size - 1))
Run Code Online (Sandbox Code Playgroud)

  • 自 RecyclerView 1.2.0-alpha04 起,MergeAdapter 已重命名为 ConcatAdapter:https://developer.android.com/reference/kotlin/androidx/recyclerview/widget/ConcatAdapter (3认同)

Pet*_*ter 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);
Run Code Online (Sandbox Code Playgroud)