Проблема получения данных из room во ViewModel, используя Transformations.map
У нас есть recyclerview, ViewModel и room, из которого необходимо получать данные во ViewModel, после чего отобразить их в recyclerview. Во ViewModel необходимо вытащить данные из Flow, после чего отобразить их в recyclerview. Проблема заключается в том, что во ViewModel не удаётся получить данные из Room.
DB0ViewModel.kt:
class DB0ViewModel(app: Application): AndroidViewModel(app) {
val liveData = MutableLiveData<ArrayList<DataModel>>()
init {
val db0 = DB0.getDB0(app)
var dataList = ArrayList<DataModel>()
dataList.add(DataModel("test1", "test1", "tes1")) //+
val DB0LiveData = db0.getDao().GetAll().asLiveData()
Transformations.map(DB0LiveData, { list -> //-
list.forEach{
dataList.add(DataModel(it.id.toString(), it.Column0.toString(), it.Column1.toString()))
}
})
dataList.add(DataModel("test2", "test2", "test2")) //+
liveData.value = dataList
}
}
MainActivity.kt:
...
db0viewmodel = ViewModelProvider(this).get(DB0ViewModel::class.java)//vm
db0viewmodel.liveData.observe(this, androidx.lifecycle.Observer {
initial(it)
})
...
private fun initial(db0: ArrayList<DataModel>) {
recyclerView = binding.recyclerViewData
adapter = DataAdapter(this)
recyclerView.adapter = adapter
adapter.setList(db0)
recyclerView.invalidate()
}
DB0Dao.kt:
...
@Query("SELECT * FROM table0")
fun GetAll(): Flow<List<DB0Entity>>
...
Необходимо отметить, что статичные данные, добавляемые в DB0ViewModel (помеченные комментарием +) добавляются без проблем. Также ранее при использовании .getDao().GetAll().asLiveData().observe(this){ list-> ... в MainActivity получить данные также удавалось. В чём может быть проблема и как её можно решить?