1. 程式人生 > >挑戰練習10.6 實現高效的RecyclerView重新整理

挑戰練習10.6 實現高效的RecyclerView重新整理

把原本使用的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的變化,可以得知後退時沒有變化