次のような 2 つのライブ データ オブジェクトがあります。
private val _hours: MutableLiveData<MutableList<Hour>>
get() =
MutableLiveData<MutableList<Hour>>().apply {
value = HourRepo.getHours(getApplication())
}
private val _selectedHours: MutableLiveData<MutableList<Hour>>
get() =
MutableLiveData<MutableList<Hour>>().apply {
value = AppData.selectedHours
}
これらの LiveData 値のいくつかのプロパティを次のように変更します。
fun checkHour(hour: Hour) {
_hours.value?.find { it -> hour == it }?.isChecked =
!_hours.value?.find { it -> hour == it }?.isChecked!!
if (hour.isChecked) {
_selectedHours.value?.add(hour)
} else {
_selectedHours.value?.remove(hour)
}
_selectedHours.notifyObserver()
_hours.notifyObserver()
}
そして、この拡張機能を使用して、これらの変更後にオブザーバーをトリガーしようとします。
private fun <T> MutableLiveData<T>.notifyObserver() {
this.value = this.value
}
ただし、オブザーバーは呼び出されません。これはオブザーバーのコードです:
studentViewModel = (activity as Homepage).getViewModel()
studentViewModel.getHours(currentDay).observe(viewLifecycleOwner, Observer {
hourAdapter.submitList(it)
})
私は答えを探してみましたが、何もうまくいきませんでした。何が問題なのですか?