如何在FragmentPagerAdapter中使用notifyDataSetChanged?
在onResume中
我使用了mMyFragmentPagerAdapter.notifyDataSetChanged();,但它不起作用
但
mMyFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
是有效的
public class Activity extends FragmentActivity{
static ViewPager mViewPager;
private MyFragmentPagerAdapter mMyFragmentPagerAdapter;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mViewPager = (ViewPager) findViewById(R.id.pager);
mMyFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mMyFragmentPagerAdapter);
}
private static class MyFragmentPagerAdapter extends FragmentPagerAdapter {
...
}
@Override
protected void onResume() {
super.onResume();
//WORKS
mMyFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mMyFragmentPagerAdapter);
//DOESN'T WORK
mMyFragmentPagerAdapter.notifyDataSetChanged();
mViewPager.setAdapter(mMyFragmentPagerAdapter);
}
}填充:
public void startView() {
this.questions.clear(); // this.questions is a LinkedList
this.questions.add(q);
}发布于 2013-04-24 16:24:42
首先,要更新ListView / ViewPager或任何其他类型的视图及其适配器,您需要重新查询Cursor,例如,如果您正在使用它填充视图。因此,在您的情况下,您有一个ViewPager和一个Adapter。所以你首先要考虑的是你更新LinkedList的方式。在您的情况下,您这样做是正确的,但在我看来,外部类中的this.quetions不同于您用来填充适配器的LinkedList。在这种情况下,我建议您不要使用外部类来更新适配器。如果根据代码结构很难做到这一点,只需确保您在Fragment和外部类中使用相同的LinkedList。
发布于 2015-08-03 16:01:05
更改适配器,将FragmentPagerAdapter扩展到FragmentStatePagerAdapter,然后notifyDataSetChanged就可以正常工作。这是我的工作。
https://stackoverflow.com/questions/16186268
复制相似问题