LiveData не проходит PagedList - PullRequest
0 голосов
/ 10 июля 2020

У меня есть LiveData, которая сохраняет состояние. Когда я меняю статус, LiveData не обновляет PagedList (я так думаю).

Это мой код:

class ModuleViewModel(
private val repository: ModuleRepository,
) : ViewModel() {

private val _state = MutableLiveData<ModuleState>().apply { value = ModuleState() }
val state: LiveData<ModuleState>
    get() = _state


private fun getEntriesPaged () {
    viewModelScope.launch(Dispatchers.IO) {

            var label : String? = title
            _state.postValue( _state.value?.copy(isLoading = true ) )
            val list = repository.getEntriesPaged(lastEntriesType, collection?.idCollection )

            if (list != null) {
             
                _state.postValue ( _state.value?.copy(
                    isLoading = false, 
                    toolbarTitle = label, 
                    entries = list  
                ))
             
            }
    }
}
data class ModuleState(
    var entries: LiveData<PagedList<Entries>>? = null,
    val isLoading: Boolean = false,
    val toolbarTitle: String? = null,
    val error: String? = null
)
class EntriesFragment(): Fragment(R.layout.fragment_entries) {

... 
viewModel.state.observe(requireActivity(), Observer { render(it) })

 fun render(state: ModuleState) {
        with(state) {

            if (entries != null)
                adapterPaged.submitList(state.entries!!.value)


            if (toolbarTitle != null) {
                appViewModel.toolbarTitle.value = toolbarTitle
            }

            if (error!= null) {
                snackbar.setText(error)
                snackbar.show()
            }

            list_news_RecyclerView.scrollToPosition(0)
            pullToRefresh.isRefreshing = isLoading

        }
    }

}

Я не получаю записи но я получаю toolbarTitle, loading. Почему?

Когда я использую преобразование:

val entries2: LiveData<PagedList<Entries>> = Transformations.switchMap(_state) { it -> it.entries }

Работает. Фрагмент показывает записи.

Где проблема?

Спасибо за помощь :)

...