作者gcobc12632 (Ted)
看板AndroidDev
标题Re: [问题] GridLayoutManager要如何由左至右排列
时间Tue Apr 9 19:14:28 2019
刚好最近有遇到类似的问题
又碰巧找到了一些规律 就常试把它写出来看看
测试了一下 应该(?)是没什麽太大的问题
我的解法比较偏向於资料的重新排序
但个人不太懂什麽矩阵转置 所以是硬干搞出来的
所以程式码很杂 连我自己都不知道怎麽解释
也请版上大大鞭小力一点……
-
//行数
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(资料排序会整个乱掉(懒得解了
--
By ALi Project グランギニョル
仏语で「操り人形」または「人形剧」を指す。
普通は19世纪末のパリに実在した剧场「グラン・ギニョル座」を指す。
この剧场では人形の代わりに人间が出演し,残酷でエロチックな恐怖剧を演じた。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.222.191.78
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1554808471.A.D1B.html
※ 编辑: gcobc12632 (61.222.191.78), 04/09/2019 19:18:24