寫在前面:
歡迎所有人給我提出任何意見和建議
請注意每一次的程序都是沒有承接之前的挑戰練習
如果有疑問或者意見的可以在下方評論
由於不常上線,留下 QQ:623614154 歡迎共同探討問題
謝謝!
資源區:
第十章挑戰練習–>下載鏈接
參考資源:
https://blog.csdn.net/qq_39479426/article/details/82944117
挑戰練習10.6:實現高效的RecyclerView刷新
Adapter的notifyDataSetChanged方法會通知RecyclerView刷新全部的可見列表項。在CriminalIntent應用裏,這個方法不夠高效。這是因爲,返回CrimeListFragment時,最多隻有一個Crime實例會發生變化。
只需要刷新列表項中的單個crime項的話,應該使用RecyclerView.Adapter的notifyItemChanged(int)方法。修改代碼調用這個方法很簡單,但如何定位並刷新具體位置的列表項呢?這是一個挑戰!
- 這個挑戰練習主要考慮優化問題
添加DateFormat類中的靜態方法
-
我們導入
android.text.format.DateFormat
包
使用其中的format方法,將日期時間格式化輸出,相信一看就懂了 -
代碼(CrimeListFragment.java)
private void updateUI() {
CrimeLab crimeLab = CrimeLab.get(getActivity());
List<Crime> crimes = crimeLab.getCrimes();
if (mAdapter == null) {
mAdapter = new CrimeAdapter(crimes);
mCrimeRecyclerView.setAdapter(mAdapter);
} else {
//只單獨刷新一條
mAdapter.notifyItemChanged(itemPosition);
}
}
結果
- 可以看到,日期格式改變了,加入了星期放在前面了