Я занимаюсь разработкой приложения для Android с использованием библиотеки комнат и жизненных циклов. в настоящее время у меня есть два списка Livedata и один поток Observable с помощью MediatorLivedata и один адаптер для повторного просмотра. Приложение имеет две вкладки в tablayout. Каждая вкладка имеет собственный список с одним и тем же типом данных, но разными значениями. Например, Livedata1 = Tab1, Livedata2 = Tab2
Когда пользователь выберет tab2, список изменится на tab2 и вернется к Tab1, список изменится на tab1 и обновит текущий элемент в tab1, список изменится на tab2, даже если яизменить вкладку.
Как я могу решить эту проблему?
Я уже пытался удалить источник данных в MediatorLivedata, когда пользователь изменяет вкладку, но выдает то же самое
// ViewModel
private var getAllListOfOrders = MediatorLiveData<List<OrderEntities>>()
init {
getAllListOfOrders.addSource(getAllListPreparingOrders){ getAllListOfOrders.value = it }
}
fun getAllOrders() : LiveData<List<OrderEntities>>{
return getAllListOfOrders
}
fun isForPickUp(tabName: String){
if (!tabName.equals("For Preparing", true)){
getAllListOfOrders.addSource(getAllListPickUpOrders){
getAllListOfOrders.value = it
getAllListOfOrders.removeSource(getAllListPickUpOrders)}
}else{
getAllListOfOrders.addSource(getAllListPreparingOrders){
getAllListOfOrders.removeSource(getAllListPickUpOrders)
getAllListOfOrders.value = it }
}
}
// Activity
orderViewModel.getAllOrders().observe(this, Observer {
adapter.setOrderList(it as ArrayList<OrderEntities>)
})
// RecyclerView Adapter
fun setOrderList(orderList : ArrayList<OrderEntities>){
this.orderList = orderList
notifyDataSetChanged()
}
Ожидаемый результат, когда пользователь не изменил вкладку, список не изменится