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

本篇內容學習子互聯網對象

相關文章
相關標籤/搜索