数据来自数据库。第一次出现在recycleView 上时,记录(编号)显示正确。当您移动到某个元素并返回列表时,条目数可能会减少。您只能通过 update 重置状态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()
}
代替
在
notifyDataSetChanged() 不起作用,因为 您不会更改现有数据,而是用新数据替换它们