Fragment中,RecyclerView遇到notifyDataSetChanged无效情况说明

xiaoxiao2021-02-27  334

如果数据是这样进行的初始化操作

@Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment, container, false); initView(rootView); initData(); return rootView; } public void initData() { if (mData == null) { mData = new ArrayList<>(); } mData.clear(); ... 数据填充 ... if (mAdapter == null) { mAdapter = new Adpter(); mRvList.setAdapter(mAdapter); } else { mAdapter.notifyDataSetChanged(); } }

次数如果Fragment切换出去再切换回来会走notifyDataSetChanged方法而不是重新创建,此时数据会显示不出来.原因是: 在使用notifyDataSetChanged方法更新列表数据时,一定要保证数据为同个对象(即hashCode要一致)

所以解决办法 就是从新创建adpter,并设置,不要调用notifyDataSetChanged. 或者保存上次的view,在从新调用onCreateView的时候复用.

本篇内容学习子互联网

转载请注明原文地址: https://www.6miu.com/read-1807.html

最新回复(0)