Re: [問題] GridLayoutManager要如何由左至右排列
剛好最近有遇到類似的問題
又碰巧找到了一些規律 就常試把它寫出來看看
測試了一下 應該(?)是沒什麼太大的問題
我的解法比較偏向於資料的重新排序
但個人不太懂什麼矩陣轉置 所以是硬幹搞出來的
所以程式碼很雜 連我自己都不知道怎麼解釋
也請版上大大鞭小力一點……
-
//行數
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://www.ptt.cc/bbs/AndroidDev/M.1554808471.A.D1B.html
※ 編輯: gcobc12632 (61.222.191.78), 04/09/2019 19:18:24
討論串 (同標題文章)
AndroidDev 近期熱門文章
PTT數位生活區 即時熱門文章