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

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

@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的时候复用.

本篇内容学习子互联网

你可能感兴趣的:(Fragment中,RecyclerView遇到notifyDataSetChanged无效情况说明)