我一直在使用 CWAC's EndlessAdapter在 ListView 上实现无限滚动。
我想完成 ViewPager 的等价物。遗憾的是,PageAdapter 和 ListAdapter 不共享相同的通用基类。
解决此问题的最佳方法是什么?是否存在已经处理此问题的库?
最佳答案
What's the best way to go about this?
将“无穷无尽”的逻辑添加到您自己的 PagerAdapter
实现中。或者,如果您愿意,可以尝试创建装饰性 PagerAdapter
,EndlessAdapter
装饰常规 Adapter
的方式。
后者可能会很棘手,因为 PagerAdapter
是为页面设计的 View 或 fragment ,并且像 FragmentPagerAdapter
这样的类内部的 fragment 处理有点复杂吓人。
Does a library exist that already handles this?
据我所知没有。
主要是因为用例似乎没有那么引人注目。使用 ListView
,用户可以快速浏览列表,快速滚动数十或数百行。因此,使用“we got to the end”作为加载更多数据的触发器似乎是合理的。但是,使用 ViewPager
时,通常需要更长的时间才能到达终点,尤其是在您未使用 PagerTabStrip
或等效项的情况下。因此,等到用户一路走到尽头才开始加载额外的数据,这对用户来说似乎很烦人——你有那么多时间去检索更多数据,但没有使用它。
因此,您可以使用 ViewPager
注册一个 ViewPager.OnPageChangeListener
。当 onPageSelected()
时,您认为自己接近尾声,启动 AsyncTask
(或其他)以收集更多数据。接下来的问题是您需要更新 PagerAdapter
使用的数据,并在数据更新后调用该适配器上的 notifyDataSetChanged()
。
关于android - ViewPager 的无限适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15446806/