相关疑难解决方法(0)

带有 DiffUtil.ItemCallback 的 ListAdapter 始终认为对象相同

我正在尝试将 ListAdapter 与 Room 和 LifeData 一起使用。但是我遇到了 DiffUtil.ItemCallback 的奇怪行为 - areContentsTheSame() 方法中的对象总是相同的。添加和删​​除对象没问题,但更改内容有问题。

物品类别:

@Entity(tableName = "item")
data class Item(var num: Int) {

    @PrimaryKey(autoGenerate = true)
    var key: Int = 0

}
Run Code Online (Sandbox Code Playgroud)

适配器类

class LifeAdapter : ListAdapter<Item, LifeAdapter.ViewHolder>(DiffCallback()) {

    private class DiffCallback : DiffUtil.ItemCallback<Item>() {
        override fun areItemsTheSame(oldItem: Item, newItem: Item) = oldItem.key == newItem.key
        override fun areContentsTheSame(oldItem: Item, newItem: Item) = oldItem.num == newItem.num
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.item_item, parent, false)
        return …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview

12
推荐指数
2
解决办法
5983
查看次数

标签 统计

android ×1

android-recyclerview ×1