我正在使用ViewPager开发一个用于横向滚动表的应用程序,有时我需要更改适配器以加载一组不同的表 . 我试着做以下事情:
mViewPager.setAdapter(new pagerAdapterPushed(getSupportFragmentManager()));
mViewPager.getAdapter().notifyDataSetChanged();
indicator.setViewPager(mViewPager);
indicator.invalidate();
mViewPager.invalidate();
但它总是重新加载以前的数据 . 是否可以更改ViewPager的适配器?
5 回答
完全像我的APP做...
对于更改ViewPagerAdapter,我所做的是:
清除当前适配器内的所有片段
将当前适配器设置为null
为ViewPager分配新的adpater
希望它有所帮助〜
我看到@RRTW的方式适用于某些人,但它并没有为我做的伎俩(虽然它很接近) . 没有'commitNow()'而不是常规'commit()'它将无法正常工作 . 我做了类似的事情:
我找到了一个非常简单的选项,我不知道它是对还是错,但你可以重新设置适配器
这是按钮FloatingActionButton的谷歌示例项目选项卡式活动的示例
您需要在寻呼机适配器中覆盖
public int getItemPosition (Object object)
. 对于viewpager中的每个元素,您需要返回POSITION_UNCHANGED
(如果它仍在寻呼机中)或POSITION_NONE
(如果它已被删除) . 否则,查看寻呼机赢得't know something has changed. I wouldn' t建议设置新适配器,只清除旧适配器中的数据 .添加此内容以查看寻呼机以重新加载下一个片段: