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

若是数据是这样进行的初始化操做ide

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

本篇内容学习子互联网对象

相关文章
相关标签/搜索