Ste*_*Ste 16 android adapter android-viewpager
我正在使用ViewPager开发一个用于横向滚动表的应用程序,有时我需要更改适配器以加载一组不同的表.我试过做以下事情:
mViewPager.setAdapter(new pagerAdapterPushed(getSupportFragmentManager()));
mViewPager.getAdapter().notifyDataSetChanged();
indicator.setViewPager(mViewPager);
indicator.invalidate();
mViewPager.invalidate();
Run Code Online (Sandbox Code Playgroud)
但它总是重新加载以前的数据.是不是可以更改ViewPager的适配器?
RRT*_*RTW 32
完全像我的APP做...
对于更改ViewPagerAdapter,我所做的是:
为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);
Run Code Online (Sandbox Code Playgroud)希望它有所帮助〜
您需要public int getItemPosition (Object object)在寻呼机适配器中覆盖。对于视图分页器中的每个元素,您需要返回POSITION_UNCHANGED(如果它仍在分页器中)或POSITION_NONE(如果它已被删除)。否则,视图寻呼机将不会知道某些内容已发生更改。我不建议设置新适配器,只需清除旧适配器中的数据即可。