问题:我有一个ViewPager,使用FragmentStatePagerAdapter进行设置,并使用全局arraylist作为其fragment的内容。当我想要更新这个全局array时,我只需调用
arraylist.add()方法,实例化一个新的FragmentStatePagerAdapter和一个新的ViewPager。然而,出于某种原因,Adapter根本没有调用getItem。并不是因为它的数据集为空(它不是),也不是其他任何原因...它只是没有被调用。我甚至设置了一个日志来测试它。以下是我的代码:
// Create the adapter that will return a fragment for event
SectionsPagerAdapter adapter = new SectionsPagerAdapter(getFragmentManager());
// Set up the ViewPager with the sections adapter.
ViewPager pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(adapter);
/**
* A FragmentStatePagerAdapter that returns a fragment corresponding to
* an index of the global events array
*/
public class SectionsPagerAdapter extends FragmentStatePagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
/**
* Called to instantiate the fragment for the given page
*/
@Override
public Fragment getItem(int position) {
Log.v("Miles", "getItem called");
// getItem is called to instantiate the fragment for the given page.
return EventFragment.newInstance(events.get(position));
}
/**
* Total number of pages (fragments) there are
* Given by size of the global events array minus 1
*/
@Override
public int getCount() {
return events.size() - 1;
}
}
这种设置可能会有什么问题吗?我可以验证全局arraylist中有数据,但没有片段被实例化以反映出来。
notifyDataSetChanged
吗? - Karakuri