android viewpager更改适配器

我正在开发一个横向滚动表的ViewPager的应用程序,有时我需要更改适配器加载一组不同的表。 我试图做到以下几点:

mViewPager.setAdapter(new pagerAdapterPushed(getSupportFragmentManager())); mViewPager.getAdapter().notifyDataSetChanged(); indicator.setViewPager(mViewPager); indicator.invalidate(); mViewPager.invalidate(); 

但它总是重新加载以前的数据。 难道不能更改ViewPager的适配器吗?

  • Android ViewPager和TabLayout无法快速运行
  • 如何testing片段视图对用户是否可见?
  • Android中的分页视图传呼机的单独后退导航
  • 在恢复活动时刷新FragmentStatePagerAdapter上的图像
  • 在android viewpager幻灯片?
  • ViewPager转换的PageCurlanimation?
  • 屏幕方向更改后,从ViewPager的适配器中销毁项目
  • 正确插入和删除视图到浏览器
  • 完全像我的APP在做…

    对于ViewPagerAdapter的改变,我做的是:

    1. 清除当前适配器内的所有碎片
    2. 将当前适配器设置为null
    3. 为ViewPager分配新的adpater

       /* Clear all Fragments inside current adapter */ public class MyPagerAdapter extends FragmentPagerAdapter { private ArrayList<Fragment> fragments=new ArrayList<Fragment>(); //...some stuff public void clearAll() //Clear all page { for(int i=0; i<fragments.size(); i++) fragMan.beginTransaction().remove(fragments.get(i)).commit(); fragments.clear(); } } /* Set current adapter to null */ Constants.VP.removeAllViews(); Constants.VP.setAdapter(null); /* Assign new adpater for ViewPager */ Constants.PAGER=new MyewPagerAdapter(getSupportFragmentManager()); Constants.VP.setAdapter(Constants.PAGER); 

    希望它有助于〜

    您需要在寻呼机适配器中重写public int getItemPosition (Object object) 。 对于viewpager中的每个元素,您都需要返回POSITION_UNCHANGED (如果它仍在传呼机中)或POSITION_NONE (如果它被移除)。 否则视图寻呼机将不知道有什么改变。 我不build议设置一个新的适配器,只是清除旧的数据。

    添加这个查看分页器重新加载下一个片段:

     viewPager.setCurrentItem()