FragmentPagerAdapter 不更新项目
FragmentPagerAdapter doesn't update items
我有 FragmentPager 适配器,它看起来像这样:
public class ImageAdapter extends FragmentPagerAdapter{
private List<ImageItem> items;
public ImageAdapter(List<ImageItem> items, FragmentManager manager) {
super(manager);
this.items = items;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Fragment getItem(int position) {
ImageFragment fragment = new ImageFragment();
fragment.setItem(items.get(position));
return fragment;
}
@Override
public int getItemPosition(Object object) {
ImageFragment fragment = (ImageFragment)object;
int position = items.indexOf(fragment.getItem());
if(position >= 0) {
fragment.pudDataChanges();
return position;
} else return POSITION_NONE;
}
}
所以片段本身是空的,所有定制都在 getItem 和 getItemsPoisition 中,然后我有一个加载器创建这个适配器蚂蚁把它放到 ViewPager:
@Override
public void onLoadFinished(Loader<ArrayList<ImageItem>> loader, ArrayList<ImageItem> data) {
adapter = new ImageAdapter(data, getChildFragmentManager());
pager.setAdapter(adapter);
pager.setCurrentItem(0, true);
adapter.notifyDataSetChanged();
hideProgressDialog();
getLoaderManager().initLoader(SearchHelper.INSERT_ITEMS_TO_DATABASE_ID, null, new InsertItemsToDatabaseHandler(data)).forceLoad();
}
第一次它设置一切正常,但第二次和以后它只是不调用 getItem() 并且我有空的 Fragments
我相信你需要添加
@Override
public void onLoaderReset(Loader<ArrayList<ImageItem>> loader) {
pager.setAdapter(null);
}
到实现LoaderManager.LoaderCallbacks<>
的class。
我有 FragmentPager 适配器,它看起来像这样:
public class ImageAdapter extends FragmentPagerAdapter{
private List<ImageItem> items;
public ImageAdapter(List<ImageItem> items, FragmentManager manager) {
super(manager);
this.items = items;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Fragment getItem(int position) {
ImageFragment fragment = new ImageFragment();
fragment.setItem(items.get(position));
return fragment;
}
@Override
public int getItemPosition(Object object) {
ImageFragment fragment = (ImageFragment)object;
int position = items.indexOf(fragment.getItem());
if(position >= 0) {
fragment.pudDataChanges();
return position;
} else return POSITION_NONE;
}
}
所以片段本身是空的,所有定制都在 getItem 和 getItemsPoisition 中,然后我有一个加载器创建这个适配器蚂蚁把它放到 ViewPager:
@Override
public void onLoadFinished(Loader<ArrayList<ImageItem>> loader, ArrayList<ImageItem> data) {
adapter = new ImageAdapter(data, getChildFragmentManager());
pager.setAdapter(adapter);
pager.setCurrentItem(0, true);
adapter.notifyDataSetChanged();
hideProgressDialog();
getLoaderManager().initLoader(SearchHelper.INSERT_ITEMS_TO_DATABASE_ID, null, new InsertItemsToDatabaseHandler(data)).forceLoad();
}
第一次它设置一切正常,但第二次和以后它只是不调用 getItem() 并且我有空的 Fragments
我相信你需要添加
@Override
public void onLoaderReset(Loader<ArrayList<ImageItem>> loader) {
pager.setAdapter(null);
}
到实现LoaderManager.LoaderCallbacks<>
的class。