【问题标题】:Prevent specific fragment within viewpager from refreshing防止viewpager中的特定片段刷新
【发布时间】:2018-09-16 23:20:03
【问题描述】:

我在一个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 重新加载所有列表并转到该列表的顶部。

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

【问题讨论】:

    标签: android list android-viewpager fragment adapter


    【解决方案1】:

    每次您在视图寻呼机中的 3 个片段之间移动时,片段调用中的方法 onCreateView。所以解决方案是:

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

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

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

    【讨论】:

    • 我刚才试过了,但每当我回到片段时,它仍然会重新加载。你认为它与 FragmentStatePagerAdapter 有关吗?
    • 你能把你的代码。回到片段是什么意思。哪个片段?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多