Skip to content

Latest commit

 

History

History
157 lines (97 loc) · 8.56 KB

pager.md

File metadata and controls

157 lines (97 loc) · 8.56 KB

支持 ViewPager 和 ViewPager2

ViewPager

导入

首先需要导入 assemblyadapter-pager 模块,请参考 README 中的 导入 部分

AssemblyAdapter 提供了以下 Adapter 来支持 ViewPager:

Concat 支持

通过 ConcatPagerAdapterConcatFragmentStatePagerAdapter 也为 PagerAdapterFragmentStatePagerAdapter 提供了连接支持,可以轻松的支持 header 和 footer,用法同 ConcatAdapter 一样

ViewPager 数据刷新支持

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 方法对数刷新提供了支持可放心使用

ViewPager2

导入

首先需要导入 assemblyadapter-pager2assemblyadapter-pager2-paging 模块,请参考 README 中的 导入 部分

AssemblyAdapter 提供了以下 Adapter 来支持 ViewPager2:

Paging 支持

AssemblyAdapter 提供了 PagingDataFragmentStateAdapterLoadStateFragmentStateAdapterAssemblyPagingDataFragmentStateAdapterAssemblyLoadStateFragmentStateAdapter 来为 FragmentStateAdapter 提供 Paging 支持,用法同 PagingDataAdapterAssemblyPagingDataAdapter 一样

更多示例