防止viewpager中的特定片段刷新

时间:2018-09-16 23:20:03

标签: android list android-viewpager fragment adapter

viewpager中有多个片段,并且每当用户选择浏览其他社区时,第一个片段(TimelineFragment)都会被替换。

当我将FragmentPagerAdapter更改为FragmentStatePagerAdapter时,我能够成功更改TimelineFragment,因为即使我使用pagerAdapter.notifyDataSetChanged(),即使FragmentPagerAdapter都不会更新片段,

因此,我将FragmentStatePagerAdapter与以下代码一起使用:

@Override
public Fragment getItem(int position) {
    return fragmentList.get(position);
}

public void setItem(int position, Fragment fragment) {
    fragmentList.set(position, fragment);
}

@Override
public int getCount() {
    return fragmentList.size();
}

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

问题是,每当我移至某个片段时,该片段都会被刷新。这样一来,每个片段中的recyclerview都会重新加载所有列表,然后转到该列表的顶部。

我在这里的目标是,当用户选择查看其他社区时,时间轴片段(ALONE,希望排除其他片段)将是唯一要重新加载的片段,并根据所选社区加载相应的列表。

1 个答案:

答案 0 :(得分:0)

每次在视图分页器中的3个片段之间移动时,片段调用中的方法onCreateView就会被调用。所以解决方案是:

1-在您的片段中添加static boolean loaded=false;

2-在调用刷新recyclerview的代码或您不想调用的任何代码之前,添加

    if(!loaded){
    //your code
    ...

    loaded=true;
    }