実装したいもの
- 横方向にスクロール可能なUIを作成する
- ページ数に連動したインジケーターを表示する
- 無限にスクロール
スクロール可能なUIとインジケーターを作成する
-
ページ数に連動したドットインジケーターの作成方法
-
TabLayout
をインジーターとして使用する(TabLayoutMediator
) - ただし、無限スクロールと併用することは、この方法では自分が試した限り不可能であった(後述)
-
ViewPager2のView更新を最適化する
-
DiffUtilを使用した方法
- データの差分を算出し、その差分のみをView更新することができる
- 表示データを定期的に更新する際、点滅エフェクトが走らないようにしたい場合にも有用
-
TabLayoutの属性のまとめ
- インジケーターのドット間隔を調整するなど、UIの調整方法を調べる際に有用
無限スクロールの実装
-
方法1:ItemListの前後にフェイクデータを追加する方法
- 実装がやや複雑
- DiffUtilとの併用が可能(AsyncListdDfferにもフェイクデータを追加すればよい)
- スクロール時に少し引っかかる感じがある
-
方法2:ItemListSizeをInt.MAX_VALUEなど、大きな値を設定する方法
- 実装がシンプルで動作も軽量
- DiffUtilとの併用ができなかったため、Viewの更新が不要な場合に適している
- スクロール時は滑らか