0

次のような 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)
    })

私は答えを探してみましたが、何もうまくいきませんでした。何が問題なのですか?

4

0 に答える 0