作者taco2548 (T@cO)
看板AndroidDev
标题Re: [问题] GridLayoutManager要如何由左至右排列
时间Sat May 9 07:18:54 2020
回覆自己的文章
※ 引述《taco2548 (T@cO)》之铭言:
: 我希望我的RecyclerView是可以左右拖曳,而不是上下拖曳
: GridLayoutManager layoutManager
: = new GridLayoutManager(context, 3, LinearLayoutManager.HORIZONTAL, false);
: 呈现的结果如下
: 00 03 06 09
: 01 04 07 10
: 02 05 08 11
: 我希望呈现的结果如下
: 00 01 02 03
: 04 05 06 07
: 08 09 10 11
: 请问应该要怎麽做才能达到我想要的结果
: 设定LinearLayoutManager.VERTICAL虽然有用
: 但会变成上下拖曳
: 请各位大大开释一下
将List重排即可
List<String> newNumList = new ArrayList<>();
int baseCount = list.size();//清单总数
int tmpColumn = baseCount/spanCount;//清单总数 除 列数(横)
int columnCount = baseCount%spanCount == 0 ? tmpColumn:tmpColumn+1;//每列数量
for (int i = 0; i < columnCount; i++) {
for (int n = 0; n < spanCount; n++) {
int target = (columnCount * n) + i;
if (target >= baseCount) {
newNumList.add("null"); //占位,Adapter需做出处理
continue;
}
newNumList.add(list.get(target));
}
}
重点部份是先算出总共有几行
如果有余数就直接把行数+1
将最後一行後面的空白补满
然後再从Adapter去处理空白的问题
这样不但美观
还能适应spanCount是未知数的问题
如果没有这样子处理
可能会变成如下状况
00 03 06 09
01 04 07
02 05 08
未补满空白,转换後 X
00 01 02 03
04 05 06
07 08 09
有补满空白,转换後 O
00 01 02 03
04 05 06 07
08 09
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 42.74.129.135 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1588979938.A.1B1.html
※ 编辑: taco2548 (42.74.129.135 台湾), 05/09/2020 11:52:22
1F:推 onegoman: 推 05/10 22:21