Android編程權威指南(第三版)第10章挑戰練習

寫在前面:


歡迎所有人給我提出任何意見和建議
請注意每一次的程序都是沒有承接之前的挑戰練習
如果有疑問或者意見的可以在下方評論
由於不常上線,留下 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);
    }
}

結果

  • 可以看到,日期格式改變了,加入了星期放在前面了
    挑戰練習9.5
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章