안녕하세요. 현재 꽤 오랫동안 고민을 해도 해결이 안되서 여기에 질문 올려봅니다.
현재 LiveData와 Listadapter 그리고 diffutil을 통해 recyclerview를 제작중입니다.
현재 제 서비스에서는 db에서 데이터를 그대로 가져올 수 없어서, 데이터를 재가공합니다.
아래의 코드처럼 viewmodel에서 이런식으로 맞춰 data를 보내줍니다.
fun getSchedules(selectedDate: String, category: String, secondCategory: String): LiveData<List<Schedules>> {
val data = repository.getScheduleList(selectedDate, category, secondCategory)
val result: LiveData<List<Schedules>> = Transformations.switchMap(data) { width ->
dataFilter(selectedDate, width)
}
return result
}
그래서 데이터가 변경되면, adapter에있는 diffUtil로 데이터 변경되는걸 감지까지는 잘 하는데요.
complete라는 값을 줘서 했을때 1 안했을 때 0으로 값을 변경하는데, data class에 있는 나머지 데이터는 전부 변경값을 업데이트 해주면 areContentsTheSame에서 감지를 하는데 단 하나 complete만 계속 같다고 합니다...
data class Schedules(
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "_id")
var id: Int,
@ColumnInfo(name = "ScheduleEmoji")
var emoji: String,
@ColumnInfo(name = "ScheduleContents")
var contents: String,
@ColumnInfo(name = "ScheduleCategory")
var category: String,
@ColumnInfo(name = "ScheduleComplete")
var complete: Int,
override fun areContentsTheSame(oldItem: Schedules, newItem: Schedules): Boolean {
val complete = oldItem.complete == newItem.complete
Log.d("contents_complete :", complete.toString())
Log.d("contents_old_complete :",oldItem.complete.toString())
Log.d("contents_new_complete :",newItem.complete.toString())
Log.d("contents_complete_id :", oldItem.id.toString())우
위의 로그를 찍었을때 계속 newItem, oldItem가 complete만같게 나옵니다.. 하지만 db를 확인했을 경우 제대로 값은 업데이트 됩니다. (app inspection에서 확인했습니다.)
이렇게 DiffUtil에서 특정 값이 변경된 후의 값으로 감지하는 경우 어떻게 해야하나요..?