防止查看页程序中的特定片段刷新



我在viewpager中有几个片段,每当用户选择浏览不同的社区时,第一个片段(TimelineFragment(就会被替换。

当我将 FragmentPagerAdapter更改为 FragmentStatePagerAdapter 时,我能够成功更改 TimelineFragment,因为即使我使用 pagerAdapter,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;
}

问题是每当我移动到一个片段时,该片段都会被刷新。这使得我的回收器视图在每个片段中重新加载所有列表并转到该列表的顶部。

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

该方法每次在View Pager 中的 3 个片段之间移动时都会在片段调用中onCreateView。 所以解决方案是:

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

2-在调用刷新回收器视图的代码或您不想调用的任何代码之前添加

if(!loaded){
//your code
...
loaded=true;
}

最新更新