Re: [問題] GridLayoutManager要如何由左至右排列

看板AndroidDev作者 (Ted)時間5年前 (2019/04/09 19:14), 5年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/5 (看更多)
剛好最近有遇到類似的問題 又碰巧找到了一些規律 就常試把它寫出來看看 測試了一下 應該(?)是沒什麼太大的問題 我的解法比較偏向於資料的重新排序 但個人不太懂什麼矩陣轉置 所以是硬幹搞出來的 所以程式碼很雜 連我自己都不知道怎麼解釋 也請版上大大鞭小力一點…… - //行數 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
文章代碼(AID): #1Sh7wNqR (AndroidDev)
文章代碼(AID): #1Sh7wNqR (AndroidDev)