在ViewPager中动态更改片段内容

纳塔里奥

我有:

  • ViewPagerFragmentPagerAdapteron的A (或aFragmentStatePagerAdapter并不能真正解决我的问题)。
  • 固定数量的片段。它们都共享相同的布局,但是TextView需要设置不同的;
  • AsyncTask,查询我的数据库,并检索内容被设定成TextViews。

所以我的代码是:

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

首先,我将传递一个空引用,但随后在异步类中:

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

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

可悲的是事实并非如此。所以现在:

  • 如果片段(即getItem())是在发布异步任务结果之前创建的,则该项目将保持空白(即可见的片段,但是由于我从未调用过而具有空的文本视图),getInstance(non-null stuff)这对于片段0 &&片段1会发生。

  • 如果片段是在我的异步任务结束后创建的(片段2结束,因为getItem()仅当您通过刷卡到达该片段时才调用该片段),则第一个也是唯一的调用会getItem()产生getInstance(non-null stuff),这是可以的。

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

mmlooloo

将此添加到您的适配器:

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

呼叫getItem时,这会使适配器再次呼叫notifyDataSetChanged();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在ViewPager中更改或替换片段

来自分类Dev

更改 ViewPager 中显示的片段

来自分类Dev

如何更改ViewPager片段上的内容?

来自分类Dev

更改片段后,ViewPager 的内容消失

来自分类Dev

如何动态刷新viewpager中的片段?

来自分类Dev

ViewPager中的动态内部片段重叠

来自分类Dev

如何在ViewPager中的幻灯片上更改片段的内容?

来自分类Dev

如何在ViewPager中的幻灯片上更改片段的内容?

来自分类Dev

更改片段中的 TextView 内容

来自分类Dev

方向更改时处理ViewPager中的片段

来自分类Dev

方向更改时处理ViewPager中的片段

来自分类Dev

ViewPager片段处理更改

来自分类Dev

在ViewPager或PagerAdapter中动态更改PagerIndicator的计数

来自分类Dev

ViewPager中的片段未刷新内容或其视图

来自分类Dev

动态更改片段选项卡主机中的片段?

来自分类Dev

动态更改片段选项卡主机中的片段?

来自分类Dev

如果其内容是动态加载的,则ViewPager不显示第一个片段

来自分类Dev

在ViewPager中回收片段

来自分类Dev

ViewPager片段中的CircularFloatingActionMenu

来自分类Dev

viewpager中的片段

来自分类Dev

ViewPager片段中的ListView

来自分类Dev

ViewPager片段中的CircularFloatingActionMenu

来自分类Dev

片段中的 Viewpager

来自分类Dev

viewpager 中的片段出错

来自分类Dev

在Android中动态切换内容/片段

来自分类Dev

片段上的ViewPager中的片段在方向更改时不会重新加载

来自分类Dev

在wpf中动态更改网格内容

来自分类Dev

在Rails 4.1.4中动态更改Div内容

来自分类Dev

动态更改表单提交中的div内容