android-recyclerview – 转到其他片段后重复数据列表(滑动标签)

android-recyclerview – 转到其他片段后重复数据列表(滑动标签),第1张

概述共有3个标签:ONE ||两个|| TRI 例如: myList = 1,2,3 问题 : 在我去第二页之后 myList = 1,2,3,1,2,3(双重复制) 如果我去TRI页面 myList = 1,2,3,1,2,3,1,2,3(三重复) 在我在互联网上寻找解决方案后,我发现这个代码(在Adapter类上): public void swap(List<FoodModel> datas){ 共有3个标签:ONE ||两个|| TRI

例如:
myList = 1,2,3

问题 :

在我去第二页之后
myList = 1,3,1,3(双重复制)

如果我去TRI页面
myList = 1,3(三重复)

在我在互联网上寻找解决方案后,我发现这个代码(在Adapter类上):

public voID swap(List<FoodModel> datas){        datas = new ArrayList<>();//updated        if(mListFood !=null || mListFood.size() !=0){            mListFood.clear();            mListFood.addAll(datas);        }else{            mListFood = datas;        }        notifyDataSetChanged();    }

我在oneFragment.java中使用了这样的:

mListFoodAdapter = new ListFoodAdapter(getContext(),mFoodModel);        mListFoodAdapter.swap(mFoodModel);        mRecyclerVIEwListFood.setLayoutManager(linearlayoutmanager);        mRecyclerVIEwListFood.setAdapter(mListFoodAdapter);        mRecyclerVIEwListFood.setItemAnimator(new DefaultItemAnimator());

但它给了我nullPointer有时在RecyclerVIEw中没有数据显示

拜托,建议我从TRI的第二页回来后,如何使列表数据不再重复

请看我的代码oneFragment.java和VIEwPagerAdapter.java

oneFragment.java

public class FoodFragment extends Fragment {    private RecyclerVIEw mRecyclerVIEwListFood;    private List<FoodModel> mFoodModel = new ArrayList<>();    private ListFoodAdapter mListFoodAdapter;    @Nullable    @OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater,VIEwGroup container,Bundle savedInstanceState) {        return inflater.inflate(R.layout.fragment_foods,container,false);    }    @OverrIDe    public voID onVIEwCreated(VIEw vIEw,Bundle savedInstanceState) {        super.onVIEwCreated(vIEw,savedInstanceState);        FragmentActivity fragmentActivity = getActivity();        linearlayoutmanager linearlayoutmanager = new linearlayoutmanager(fragmentActivity);        mRecyclerVIEwListFood = (RecyclerVIEw) vIEw.findVIEwByID(R.ID.recyclerVIEw_List_foods);        mFoodModel.add(new FoodModel("1",String.valueOf(R.drawable.icon),"test 1"));        mFoodModel.add(new FoodModel("2","test 2"));        mListFoodAdapter = new ListFoodAdapter(getContext(),mFoodModel);        mRecyclerVIEwListFood.setLayoutManager(linearlayoutmanager);        mRecyclerVIEwListFood.setAdapter(mListFoodAdapter);        mRecyclerVIEwListFood.setItemAnimator(new DefaultItemAnimator());    }}

VIEwPagerAdapter.java:

public class VIEwPagerDetailStandAdapter extends FragmentStatePagerAdapter {    private final List<Fragment> mFragmentList = new ArrayList<>();    private final List<String> mFragmentTitleList = new ArrayList<>();    public VIEwPagerDetailStandAdapter(FragmentManager manager) {        super(manager);    }    @OverrIDe    public Fragment getItem(int position) {        return mFragmentList.get(position);    }    @OverrIDe    public int getCount() {        return mFragmentList.size();    }    public voID addFragment(Fragment fragment,String Title) {        mFragmentList.add(fragment);        mFragmentTitleList.add(Title);    }    @OverrIDe    public CharSequence getPageTitle(int position) {        return mFragmentTitleList.get(position);    }}
解决方法 你在onVIEwCreated()方法中有一个问题.
每次创建片段视图后都会调用OnVIEwCreated()方法.但是片段如果在内存中则被重用.这就是你的mFoodModel列表没有重新初始化的原因.因此,您需要重新初始化mFoodModel以创建以前的数据.

所以这是你修改过的OnCreateVIEw()`

@OverrIDepublic voID onVIEwCreated(VIEw vIEw,Bundle savedInstanceState) {    super.onVIEwCreated(vIEw,savedInstanceState);    FragmentActivity fragmentActivity = getActivity();    linearlayoutmanager linearlayoutmanager = new linearlayoutmanager(fragmentActivity);    mRecyclerVIEwListFood = (RecyclerVIEw) vIEw.findVIEwByID(R.ID.recyclerVIEw_List_foods);    mFoodModel = new ArrayList<>(); // initialize you List    mFoodModel.add(new FoodModel("1","test 1"));    mFoodModel.add(new FoodModel("2","test 2"));    mListFoodAdapter = new ListFoodAdapter(getContext(),mFoodModel);    mRecyclerVIEwListFood.setLayoutManager(linearlayoutmanager);    mRecyclerVIEwListFood.setAdapter(mListFoodAdapter);    mRecyclerVIEwListFood.setItemAnimator(new DefaultItemAnimator());}
总结

以上是内存溢出为你收集整理的android-recyclerview – 转到其他片段后重复数据列表(滑动标签)全部内容,希望文章能够帮你解决android-recyclerview – 转到其他片段后重复数据列表(滑动标签)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1130551.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存