首页 > 解决方案 > 编辑内容时 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 中的内容会更新。

标签: androidkotlin-android-extensions

解决方案


adapter.notifyDataSetChanged();

这在 Java 中有效,但不知道 kotlin 语法。尝试在 onChange() 方法之后添加它

adapter.submitList(books)

推荐阅读