动态更改 ViewPager 中的片段内容

Dynamically changing fragment contents in a ViewPager

我有:

所以我的代码是:

public class StatsPagerAdapter extends FragmentPagerAdapter {
    static final int FRAGMENT_COUNT = 5;
    private Parameters[] sectionData;

    public StatsPagerAdapter(FragmentManager manager) {
        super(manager);
        this.sectionData = new Parameters[FRAGMENT_COUNT];
    }

    @Override
    public Fragment getItem(int position) {
        return StatsSectionFragment.getInstance(this.sectionData[position]);
    }

    @Override
    public int getCount() {
        return FRAGMENT_COUNT;
    }

    public void setSectionData(int position, Parameters sectionData) {
        this.sectionData[position] = sectionData;
        notifyDataSetChanged();
    }
}

所以我将 sectionData[position] 传递给通用子片段的 getInstance() 方法。该数据应该区分加载到 ViewPager.

中的片段的每个实例

起初我将传递一个空引用,但随后在我的异步 class:

    @Override
    protected void onProgressUpdate(Parameters... sectionValues) {
        super.onProgressUpdate(sectionValues);
        mPagerAdapter.setSectionData(sectionId, sectionValues[0]);
    }

应该调用上面的 setSectionData(),更新 sectionData[position] 并生成对 notifiyDataSetChanged() 的调用。我希望这样做会使适配器再次检索其所有项目,从而再次调用 getItem() 并加载新片段。

遗憾的是它没有。所以现在:

如何将内容重新加载到那些已经存在的片段中,或强制适配器调用 getItem() 并更新其视图?

将此添加到您的适配器:

@Override
public int getItemPosition(Object object){
    return PagerAdapter.POSITION_NONE;
}

这会使您的适配器在您调用 notifyDataSetChanged();

时再次调用 getItem