操作
機能 #190
未完了検温記録(JetPack Kotlin)に履歴の選択削除を追加する
開始日:
2020/11/22
期日:
進捗率:
80%
予定工数:
高橋 徹 さんが約4年前に更新
- 説明 を更新 (差分)
- ステータス を 新規 から 進行中 に変更
- 進捗率 を 0 から 50 に変更
ItemTouchHelper を使ってドラッグ&ドロップ、スワイプの操作に対する実装を記述する(次リンク参照)。
この実装は表示の変更のみなので、データベースから削除する実装を追加する必要がある。
スワイプ操作時は、ViewHolderを引数に取るが、ViewHolderは削除したアイテムを識別する情報が不足しているので何か実装を補う必要がある。
- Adapter派生クラス(TemperatureAdapter)に、指定したpositionの項目を返すメソッドを追加
fun getTemperatureAtPosition(position: Int): Temperature { return getItem(position) }
getItemメソッドはアクセス範囲がprotectedなので明示的にメソッドを実装
- onSwipedメソッドでスワイプされた項目を取得しMainViewModelに削除要求する実装を追記
val temperature = adapter.getTemperatureAtPosition(position) temperatureViewModel.deleteTemperature(temperature)
- MainViewModelに項目削除メソッドを実装
fun deleteTemperature(temperature: Temperature) { viewModelScope.launch { temperatureRepository.delete(temperature) } }
- リポジトリにデータベースへ項目削除を要求するメソッドを実装
suspend fun delete(temperature: Temperature) { database.temperatureDao.delete( TemperatureEntity( id = temperature.id, measuredAt = temperature.measuredAt, measurement = temperature.measurement ) ) }
- データベースから項目を削除するメソッド定義
@Delete suspend fun delete(temperature: TemperatureEntity)
操作