Re: [問題] GridLayoutManager要如何由左至右排列
回覆自己的文章
※ 引述《taco2548 (T@cO)》之銘言:
: 我希望我的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
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.74.129.135 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1588979938.A.1B1.html
※ 編輯: taco2548 (42.74.129.135 臺灣), 05/09/2020 11:52:22
推
05/10 22:21,
4年前
, 1F
05/10 22:21, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 5 篇):
AndroidDev 近期熱門文章
PTT數位生活區 即時熱門文章