RecyclerView. Проблемы с обновлением списка и исчезновением данных
Прилетают данные из БД. При первом появлении на recycleView отображаются корректно записи (кол-во). При переходе на элемент и возврате на список, количество записей может измениться меньшую сторону. Сбросить состояние можно только через обновление notifyDataSetChanged(), однако, если запускать в observer, ничего не происходит.
Fragment
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
recyclerViewEmployee.also { rv ->
rv.layoutManager = LinearLayoutManager(activity)
rv.addItemDecoration(DividerItemDecoration(activity, LinearLayoutManager.VERTICAL))
rv.adapter = specialityAdapter
}
(arguments?.get("specialty") as Specialty).let { it ->
specialtyName = it.name
employeeSpecialtyViewModel.getAllEmployee(it.specialtyId)
.observe(viewLifecycleOwner, Observer { response ->
response?.also {
specialityAdapter.updateData(response)
recyclerViewEmployee.recycledViewPool.clear()
}
})
}
}
Сброс бага к нормальной работе:
test.setOnClickListener {
(recyclerViewEmployee.adapter as EmployeeAdapter).notifyDataSetChanged()
}
updataData()
fun updateData(data: List<Employee>) {
this.employeeList = data
notifyDataSetChanged()
}
Ответы (1 шт):
Автор решения: ЮрийСПб
→ Ссылка
Замените
this.employeeList = data
на
this.employeeList.clear();
this.employeeList.addAll(data);
notifyDataSetChanged() не срабатывает, т.к. вы не меняете уже имеющиеся данные но заменяете их на новые