若是數據是這樣進行的初始化操做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
本篇內容學習子互聯網對象