Я обнаружил аналогичную проблему там , но там не было места Room.
Поэтому я использую LiveData в DAO-Repository-ViewModel (Room Version 2.2.3):
@Query("SELECT * from ...")
fun getGoods(): LiveData<List<Goods>>
В моем фрагменте есть подписка:
mViewModel.goodsList.observe(viewLifecycleOwner, Observer {goodsList ->
mAdapter.setList(goodsList)
})
С logcat я вижу, что список не пуст. Внутри списка RecyclerView Adapter setList () тоже не пустой.
fun setList(goodsList: List<Goods>) {
records = goodsList
notifyDataSetChanged()
}
Но метод onBindViewHolder () не вызывается
override fun onBindViewHolder(viewHolder: ViewHolder, i: Int) {
// I can't get there
viewHolder.bind(records[i])
}
Я нашел 2 способа решения проблемы, но они как хаки, и я хочу понять, как лучше:
Добавить задержку при получении onChange () LiveData во фрагменте:
Handler (). postDelayed ({mAdapter. setList (goodsList)}, 200)
Переключение контекста с помощью диспетчера сопрограммы. Основное получение onChange () LiveData во фрагменте.
Где моя ошибка?