Android程式設計權威指南(第2版)—第14章挑戰練習
14.8 挑戰練習:刪除Crime記錄
修改CrimeLab的deleteCrime方法
public void deleteCrime(Crime c) {
//mCrimes.remove(c);
mDatabase.delete(
CrimeTable.NAME,
CrimeTable.Cols.UUID + " = ?",
new String[] { c.getId().toString() }
);
}
前面的練習都做了並修改程式新增新功能的同學會發現,直接修改這個deleteCrime方法,執行刪除後,app會意外終止,
RecyclerView 報IndexOutOfBoundsException。那是因為我們之前為了實現修改crime內容返回後,更新列表裡的單一crime而不是全部更新的程式碼報錯了
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.setCrimes(crimes);
mAdapter.notifyDataSetChanged(); //全量更新
//mAdapter.notifyItemChanged(mIndex); //單例更新 -- 此行報錯
}
if (crimes.size() != 0) {
mNoCrimeTextView.setVisibility(View.INVISIBLE);
mNoCrimeButton.setVisibility(View.INVISIBLE);
} else {
mNoCrimeTextView.setVisibility(View.VISIBLE);
mNoCrimeButton.setVisibility(View.VISIBLE);
}
updateSubtitle();
}
呼叫deleteCrime方法後,該Crime例項已經從資料庫中刪除了。
改回原來的notifyDataSetChanged()方法就不會報錯,但是會犧牲效率。
建議可以弄一個變數記錄是否為刪除動作,再根據判斷具體呼叫不同的更新方法。
相關文章
- Android程式設計權威指南(第2版)—第15章挑戰練習Android程式設計
- Android程式設計權威指南(第2版)—第12章挑戰練習Android程式設計
- Android程式設計權威指南(第二版)— 第10章挑戰練習Android程式設計
- Android程式設計權威指南(第二版)— 第13章挑戰練習-13.6Android程式設計
- Android程式設計權威指南(第二版)— 第13章挑戰練習-13.8Android程式設計
- Android程式設計權威指南 - 第10章 使用fragment argumentAndroid程式設計Fragment
- Android程式設計權威指南(第二版)學習筆記(十五)—— 第15章 隱式 IntentAndroid程式設計筆記Intent
- Android程式設計權威指南(第二版)學習筆記(十六)—— 第16章 使用 intent 拍照Android程式設計筆記Intent
- HTTP權威指南學習-第12章 基本認證機制HTTP
- Hadoop權威指南 第4章 關於YARNHadoopYarn
- Swift程式設計權威指南第2版 讀後收穫Swift程式設計
- 《Android程式設計權威指南 第3版》PDF版電子書下載Android程式設計
- 《父與子的程式設計之旅(第3版)》第14章習題答案程式設計
- C Primer Plus 第9章 函式 程式設計練習函式程式設計
- 《HTML52D遊戲程式設計核心技術》——第3章,第3.11節練習HTML遊戲程式設計
- HTTP權威指南學習--第8章 整合點:閘道器、隧道及中繼HTTP中繼
- 小記《SQL權威指南(第4版)》SQL
- 《Java語言程式設計(基礎篇)(原書第10版)》第2~4章部分程式設計練習題程式碼Java程式設計
- CUDA C 程式設計權威指南 學習筆記:第二章 CUDA程式設計模型程式設計筆記模型
- 第14章使用Kotlin開發JavaScript程式碼《Kotin程式設計思想·實戰》KotlinJavaScript程式設計
- 《HTML5與CSS3權威指南(第3版·下冊)》——第19章選 擇 器HTMLCSSS3
- 筆記:《挑戰程式設計競賽(第2版)》(2)筆記程式設計
- 筆記:《挑戰程式設計競賽(第2版)》(3)筆記程式設計
- 筆記:《挑戰程式設計競賽(第2版)》(1)筆記程式設計
- Android程式設計基礎 • 【第1章 Android程式入門】Android程式設計
- 《HTML5與CSS3權威指南(第3版·下冊)》——第18章CSS3概述HTMLCSSS3
- JavaScript物件程式設計-第3章JavaScript物件程式設計
- 第12章、網路程式設計程式設計
- 第1章 程式設計的方法程式設計
- 安卓權威指南第三版第16章拍照閃退問題安卓
- 《父與子的程式設計之旅(第3版)》第1章習題答案程式設計
- 《父與子的程式設計之旅(第3版)》第2章習題答案程式設計
- 《父與子的程式設計之旅(第3版)》第3章習題答案程式設計
- 《父與子的程式設計之旅(第3版)》第4章習題答案程式設計
- 《父與子的程式設計之旅(第3版)》第5章習題答案程式設計
- 《父與子的程式設計之旅(第3版)》第6章習題答案程式設計
- 《父與子的程式設計之旅(第3版)》第7章習題答案程式設計
- 《父與子的程式設計之旅(第3版)》第8章習題答案程式設計