下面是一个适配器类,用于在回收站视图中加载所有书籍项目。使用 DiffUtils 以便不会通知整个列表。
class BooksAdapter(var mContext: Context) : RecyclerView.Adapter<BooksAdapter.BooksViewHolder>() {
var books: List<BookTable> = ArrayList()
set(value) {
val result = DiffUtil.calculateDiff(BookListDiffCallBacks(ArrayList(value), ArrayList(books)))
field = value
result.dispatchUpdatesTo(this)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BooksViewHolder {
val binding = DataBindingUtil.inflate<ItemBookBinding>(LayoutInflater.from(mContext), R.layout.item_book, parent, false)
return BooksViewHolder(binding)
}
override fun getItemCount(): Int {
return books.size
}
override fun onBindViewHolder(holder: BooksViewHolder, position: Int) {
holder.setData(books[position])
}
inner class BooksViewHolder(var binding: ItemBookBinding) : RecyclerView.ViewHolder(binding.root) {
fun setData(bookTable: BookTable) {
binding.book = bookTable
}
}
} …Run Code Online (Sandbox Code Playgroud) android adapter kotlin android-recyclerview android-diffutils