挑戰練習10.6 實現高效的RecyclerView重新整理
阿新 • • 發佈:2018-11-07
把原本使用的Adapter的notifyDataSetChanged方法換成定位重新整理RecyclerView.Adapter的notifyItem。
1.在CrimeListFragment裡面定義一個全域性變數
1 private static int mCrimeIndex;
2.修改CrimeListFragment下的onClick方法
1 @Override 2 public void onClick(View v) { 3 Intent intent = CrimeActivity.newIntent(getActivity(),mCrime.getmId());4 mCrimeIndex = getAdapterPosition();//返回資料在Adapter中的位置 5 //Log.d("onClick","mCrimeIndex "+mCrimeIndex); 6 startActivity(intent); 7 }
3.修改updateUI方法
1 private void updateUI(){ 2 CrimeLab crimeLab = CrimeLab.get(getActivity()); 3 List<Crime> crimes = crimeLab.getmCrimes();4 if(mAdapter == null){ 5 mAdapter = new CrimeAdapter(crimes); 6 mCrimeRecyclerView.setAdapter(mAdapter); 7 }else { 8 //重繪當前可見區域 9 //mAdapter.notifyDataSetChanged(); 10 11 //部分重繪 12 mAdapter.notifyItemChanged(mCrimeIndex);13 } 14 }
4.執行效果:
5.用除錯資訊輸出看看mCrimeIndex的變化,可以得知後退時沒有變化