android - 编辑内容时 ListAdapter 不更新
问题描述
每次将内容添加到recyclerview时,当我去修复错误时,标题拼写错误,更新/编辑不会生效。
目标是修复更新错误,所以当我回去修复它时,内容标题将被更新
companion object
{
//THIS THE ADAPTER CLASS
private val DIFF_CALLBACK: DiffUtil.ItemCallback<Book> = object:DiffUtil.ItemCallback<Book>()
{
@Override
override fun areItemsTheSame(oldItem: Book, newItem: Book):Boolean
{
return oldItem.id == newItem.id
}
@Override
override fun areContentsTheSame(oldItem: Book, newItem: Book): Boolean
{
return oldItem.title == newItem.title &&
oldItem.author == newItem.author &&
oldItem.genre == newItem.genre
}
}
}
//THIS IS IN THE MAINACTIVITY
val adapter = BookAdapter()
recyclerView.adapter = adapter
bookViewModel =
ViewModelProviders.of(this).get(BookViewModel::class.java)
bookViewModel.getAllBooks().observe(this, object:Observer<List<Book>>
{
@Override
override fun onChanged(@Nullable books: List<Book>)
{
adapter.submitList(books)
}
})
如果我想修复拼写错误的错误,我希望 recyclerview 中的内容会更新。
解决方案
adapter.notifyDataSetChanged();
这在 Java 中有效,但不知道 kotlin 语法。尝试在 onChange() 方法之后添加它
adapter.submitList(books)
推荐阅读
- sql-server - 增加 MS SQL 恢复操作的响应时间
- c# - 将代码从 Umbraco v7 复制到 Umbraco v8 时出现问题
- ios - 生成覆盖率报告时出错
- javascript - 提取两个对象(甚至嵌套对象)之间不同的键值什么方法?
- python - MSEdgeDriver (Chromium) 不适用于版本 >= 79.0.313 (Canary)
- c# - 调用时 UI 冻结。在新窗口上显示
- python - 为视频捕获添加 X 延迟
- php - 获取/发布 web.php 创建/存储路由返回 404
- python - 如何根据缺失值的百分比计算数据框中列的不同分位数范围?
- vue.js - Vue 指令更新模糊输入