首先需要导入 assemblyadapter-pager
模块,请参考 README 中的 导入
部分
AssemblyAdapter 提供了以下 Adapter 来支持 ViewPager:
- AssemblySingleDataPagerAdapter:单数据实现
- ArrayPagerAdapter: View 数组实现
- AssemblySingleDataFragmentStatePagerAdapter:单数据实现
- ArrayFragmentStatePagerAdapter: Fragment 数组实现
通过 ConcatPagerAdapter 和 ConcatFragmentStatePagerAdapter 也为 PagerAdapter 和 FragmentStatePagerAdapter 提供了连接支持,可以轻松的支持 header 和 footer,用法同 ConcatAdapter 一样
ViewPager 有一个一直以来都存在的 bug,就是在 PagerAdapter 数据改变时即使调用了 notifyDataSetChanged
方法 ViewPager 也不会刷新其内容
原因是 ViewPager 在收到数据改变回调时会通过 PagerAdapter 的 getItemPosition 方法依次获取当前显示的 item 的 position,只有 position 是 PagerAdapter.POSITION_NONE 时才会更新
而 PagerAdapter 的 getItemPosition 方法默认返回值是 PagerAdapter.POSITION_UNCHANGED,所以我们需要重写 getItemPosition 方法,在 item 对应的数据改变时返回 PagerAdapter.POSITION_NONE 即可
AssemblyAdapter 提供的所有 Pager 相关 Adapter 都重写了 getItemPosition 方法对数刷新提供了支持可放心使用
首先需要导入 assemblyadapter-pager2
、assemblyadapter-pager2-paging
模块,请参考 README 中的 导入
部分
AssemblyAdapter 提供了以下 Adapter 来支持 ViewPager2:
- AssemblySingleDataFragmentStateAdapter:单数据实现
- ArrayFragmentStateAdapter: Fragment 数组实现
- FragmentStateListAdapter:AsyncListDiffer 实现
- AssemblyFragmentStateListAdapter:多类型 AsyncListDiffer 实现
- AssemblySingleDataFragmentStateListAdapter:单数据 AsyncListDiffer 实现
- ArrayFragmentStateListAdapter:Fragment 数组 AsyncListDiffer 实现
- PagingDataFragmentStateAdapter:Paging 实现
- AssemblyPagingDataFragmentStateAdapter:多类型 Paging 实现
- LoadStateFragmentStateAdapter:LoadState 实现
- AssemblyLoadStateFragmentStateAdapter:多类型 LoadState 实现
AssemblyAdapter 提供了 PagingDataFragmentStateAdapter 和 LoadStateFragmentStateAdapter 、AssemblyPagingDataFragmentStateAdapter、AssemblyLoadStateFragmentStateAdapter 来为 FragmentStateAdapter 提供 Paging 支持,用法同 PagingDataAdapter 和 AssemblyPagingDataAdapter 一样
- item
- PagerAdapter
- PagerFragmentStatePagerAdapter
- PagerFragmentStateAdapter