回覆自己的文章
※ 引述《taco2548 ([email protected])》之銘言:
: 我希望我的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