android - ViewPager 的无限适配器

标签 android android-viewpager

我一直在使用 CWAC's EndlessAdapter在 ListView 上实现无限滚动。

我想完成 ViewPager 的等价物。遗憾的是,PageAdapter 和 ListAdapter 不共享相同的通用基类。

解决此问题的最佳方法是什么?是否存在已经处理此问题的库?

最佳答案

What's the best way to go about this?

将“无穷无尽”的逻辑添加到您自己的 PagerAdapter 实现中。或者,如果您愿意,可以尝试创建装饰性 PagerAdapterEndlessAdapter 装饰常规 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/

相关文章:

android - FragmentPagerAdapter 的麻烦和困境 : Constructor Undefined

android - 如何创建类似于 Play 报亭布局的内容

android - 如何在 Android WebView 中播放 YouTube 视频?

java - 一个 Activity 中有两个 ViewPager

android - 切换 fragment 后保留上一个 fragment 的选项菜单

android - achartengine 在 vi​​ewpager 内进行平移

android - 导出已签名的应用程序时出现 facebook sdk 3.8 lint 错误

android - 如何更改水平进度对话框右下角的文本?

java - Android Studio 中的线程 (onClick)

android - ViewPager,与多个选项卡的 RecyclerView 相同的 fragment