android viewpager更改适配器

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

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

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

Solutions Collecting From Web of "android 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()