Re: [问题] GridLayoutManager要如何由左至右排列

楼主: gcobc12632 (Ted)   2019-04-09 19:14:28
刚好最近有遇到类似的问题
又碰巧找到了一些规律 就常试把它写出来看看
测试了一下 应该(?)是没什么太大的问题
我的解法比较偏向于资料的重新排序
但个人不太懂什么矩阵转置 所以是硬干搞出来的
所以程式码很杂 连我自己都不知道怎么解释
也请版上大大鞭小力一点……

//行数
private final int spanCount = 3;
//初始化 LayoutManager
GridLayoutManager manager = new GridLayoutManager(context, spanCount,
GridLayoutManager.HORIZONTAL, false);
//假设的原始资料
private final String[] strings = {"1", "2", "3", "4", "5", "6", "7",
"8", "9", "10", "11", "12", "13"};
ArrayList<ArrayList<String>> temp = new ArrayList<>();
for (int i = 0; i < spanCount; i++) {
temp.add(new ArrayList<>());
}
for (int i = 0; i < strings.length; i++) {
for (int j = 0; j < spanCount; j++) {
if (i % count == j) {
temp.get(j).add(strings[i]);
}
}
}
private final ArrayList<String> array = new ArrayList<>();
int a = 0;
int b = 0;
int c = 0;
for (int i = 0; i < strings.length; i++) {
array.add(strings[a]);
if (i == strings.length - 1) {
break;
}
if (a + temp.get(c).size() >= strings.length) {
b++;
a = b;
c = 0;
} else {
a = a + temp.get(c).size();
c++;
}
}

这样排序过后的 array 就可以直接照顺序给 RecyclerView 用了
效果:
spanCount = 2
https://i.imgur.com/hUNp83k.png
spanCount = 3
https://i.imgur.com/OF2EUZZ.png
spanCount = 4
https://i.imgur.com/SkSP7UJ.png
不知道这样有没有符合原PO的想法?
如果有 BUG 的话 就……再说吧(逃
※ 本方法不适用于 StaggeredGridLayoutManager(资料排序会整个乱掉(懒得解了

Links booklink

Contact Us: admin [ a t ] ucptt.com