如何将notifyDataSetChanged
与FragmentPagerAdapter
一起使用?
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);
}
答案 0 :(得分:2)
将适配器扩展FragmentPagerAdapter
更改为FragmentStatePagerAdapter
,然后notifyDataSetChanged
正常工作。
这对我有用。
答案 1 :(得分:1)
首先,要更新ListView / ViewPager或任何其他类型的视图及其适配器,您需要重新查询Cursor
,例如,如果您使用它来填充视图。因此,在您的情况下,您有ViewPager
和Adapter
。因此,您首先考虑的是更新LinkedList
的方式。在你的情况下,你做得对,但在我看来,你的外部类this.quetions
不同于你用来填充适配器的LinkedList
。在这种情况下,我建议您不要使用外部类来更新适配器。如果根据代码组织难以实现,请确保您在LinkedList
和外部课程中使用相同的Fragment
。