android - 适配器 submitList 未在 LiveData 观察者中添加新项目
问题描述
我有以下代码从我的 Room DB 中获取 LiveData 的信息 -
private fun initAdapterData() {
adapter = FriendsListAdapter(requireContext())
binding.friendsRecyclerview.setAdapterWithItemDecoration(requireContext(), adapter)
// val testList = mutableListOf<FriendModel>()
// for (i in 0..15) {
// testList.add(FriendModel("Alon Shlider", 0))
// }
// adapter.submitList(testList)
viewmodel.getAllFriends().observe(requireActivity(), Observer { userList ->
val friendsList = mutableListOf<FriendModel>()
userList.forEach { userModel ->
friendsList.add(
FriendModel(userModel.firstName.plus(" ").plus(userModel.lastName), 0))
}
friendsList.forEach {
Log.d("friend", it.toString())
}
lifecycleScope.launch(Dispatchers.Main) {
adapter.submitList(friendsList)
}
})
}
出于某种原因,在观察者内部调用 submitList 不会将项目添加到列表中。
我试图在观察者之前添加假测试项目并且它有效,并且我在调用我的 submitList 方法之前记录了模型信息并打印了有效信息。
我还尝试用 Main 调度程序的协程包装对 submitList 的调用,认为这与回调不在主线程或类似的东西中但仍然没有结果有关。
我错过了什么?一切看起来都很好,但没有将数据添加到我的 RecyclerView 中。
解决方案
首先,您必须将您的适配器分配给 RecyclerView,然后提交列表。
recylerView.adapter = adapter
adapter.submitList(friendsList)
推荐阅读
- hbase - HBase 批量加载挂起,剩余 2 个文件
- arrays - 具有 3 个或更多多个数组条件的 sumif
- ios - '无效更新:我的收藏视图中第 0 部分中的项目数无效
- java - Log4j 定义多个记录器
- angular - Angular 7 反应式表单控件
- git - git log,以可用的格式显示日期?
- java - Java Webstart“javaws -open”标志不适用于多个参数
- sqoop - Oozie Sqoop 工作流刷新表
- php - PHP 7.2 在 WordPress class-wp-hook.php 文件上引发错误
- python - DQN TensorFlow 代码很快就会耗尽内存