回复自己的文章
※ 引述《taco2548 ([email protected])》之铭言:
: 我希望我的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