自定义 GridLayoutManager
Custom GridLayoutManager
我正在考虑一种使用 RecyclerView 实现视图的方法,如下图,其中 header 行位于左侧,header 下的内容位于右侧。 关于如何解决这个问题的任何想法或指示。
如果其他人来这里寻找答案/解决方案,这就是我所做的。我在父 RecyclerView 中使用子 RecyclerView 使用默认的 GridLayoutManager。父 RV 使用 GridLayoutManager,而子 RV 使用 LinearLayoutManager。对于父 RV,使用多个视图类型,位置 0 或位置 %2 == 0 returns HEADER_TYPE,而其余 returns CARD_TYPE。使用这个
mGridLayoutManager = GridLayoutManager(activity, 3)
mGridLayoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
override fun getSpanSize(position: Int): Int {
return when (enquiryAdapter.getItemViewType(position)) {
HEADER_TYPE -> 1
CARD_TYPE -> 2
else -> -1
}
}
}
recyclerView.layoutManager = mGridLayoutManager
我更改了 spanSize。对于 returns CARD_TYPE 的位置,我膨胀了另一个 RV,它采用列表来布局内容视图。我不确定这是最好的解决方案,但这似乎对我有用。我很乐意接受任何比这更有效 better/simpler 的解决方案。
我正在考虑一种使用 RecyclerView 实现视图的方法,如下图,其中 header 行位于左侧,header 下的内容位于右侧。
如果其他人来这里寻找答案/解决方案,这就是我所做的。我在父 RecyclerView 中使用子 RecyclerView 使用默认的 GridLayoutManager。父 RV 使用 GridLayoutManager,而子 RV 使用 LinearLayoutManager。对于父 RV,使用多个视图类型,位置 0 或位置 %2 == 0 returns HEADER_TYPE,而其余 returns CARD_TYPE。使用这个
mGridLayoutManager = GridLayoutManager(activity, 3)
mGridLayoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
override fun getSpanSize(position: Int): Int {
return when (enquiryAdapter.getItemViewType(position)) {
HEADER_TYPE -> 1
CARD_TYPE -> 2
else -> -1
}
}
}
recyclerView.layoutManager = mGridLayoutManager
我更改了 spanSize。对于 returns CARD_TYPE 的位置,我膨胀了另一个 RV,它采用列表来布局内容视图。我不确定这是最好的解决方案,但这似乎对我有用。我很乐意接受任何比这更有效 better/simpler 的解决方案。