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。