プロジェクト

全般

プロフィール

機能 #190

未完了

検温記録(JetPack Kotlin)に履歴の選択削除を追加する

高橋 徹 さんが3年以上前に追加. 3年以上前に更新.

ステータス:
解決
優先度:
通常
担当者:
カテゴリ:
Android
対象バージョン:
-
開始日:
2020/11/22
期日:
進捗率:

80%

予定工数:

説明

[#167]のアプリケーションに、履歴を選択し削除する機能を追加する。

結果

高橋 徹 さんが3年以上前に更新

  • 説明 を更新 (差分)
  • ステータス新規 から 進行中 に変更
  • 進捗率0 から 50 に変更

ItemTouchHelper を使ってドラッグ&ドロップ、スワイプの操作に対する実装を記述する(次リンク参照)。

Androidプログラミング-RecyclerView

この実装は表示の変更のみなので、データベースから削除する実装を追加する必要がある。

スワイプ操作時は、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)
    

高橋 徹 さんが3年以上前に更新

  • ステータス進行中 から 解決 に変更
  • 進捗率50 から 80 に変更

他の形式にエクスポート: Atom PDF