SNM*_*SNM 5 android android-adapter android-fragments kotlin android-recyclerview
我正在使用 MergeAdapter(又名 ConcatAdapter)
https://medium.com/androiddevelopers/merge-adapters-sequentially-with-mergeadapter-294d2942127a
但我需要做的是,第一个适配器应显示网格布局,第二个适配器应显示线性布局,所以,如果我这样做
val headerAdapter = HeaderAdapter(requireContext(), Header("TestHeader"))
val dividerViewAdapter = DividerViewAdapter(requireContext())
val animalAdapter = DividerViewAdapter(requireContext(),DataSource.animalList) // -> this should be shown as a GridLayout
val mergeAdapter = MergeAdapter(headerAdapter,dividerViewAdapter,animalAdapter)
test_rv.layoutManager = LinearLayoutManager(requireContext())
test_rv.adapter = mergeAdapter
Run Code Online (Sandbox Code Playgroud)
现在这段代码工作正常,但由于它有一个 Linearlayoutmanager,所有内容都将显示为 LinearLayout,其中我的 AnimalAdapter 将不会按我想要的方式显示。
无论如何,是否可以为不同的适配器设置不同的布局管理器,以按照我想要的方式显示数据?
不,没有办法将多个LayoutManagers 与一个关联RecyclerView。TheLayoutManager代表整个RecyclerView,与 无关Adapter。换句话说:适配器没有布局管理器;相反,它RecyclerView有一个布局管理器,它还有一个适配器。
如果不是这种情况,例如,如果它在一行中间从 a 切换GridLayoutManager到 a ,则行为会变得非常奇怪。LinearLayoutManager
对于您的特定场景,线性布局中的行(对于垂直列表)或列(对于水平列表)与网格中的项目相同,其跨度计数等于跨度数,因此您可以简单地使用如果正确设置了跨度计数,则aGridLayoutManager代表整个。RecyclerView
| 归档时间: |
|
| 查看次数: |
2457 次 |
| 最近记录: |