Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 使用diffutil的recyclerview中的submitList()会导致recyclerview闪烁_Kotlin_Android Recyclerview_Listadapter_Android Diffutils - Fatal编程技术网

Kotlin 使用diffutil的recyclerview中的submitList()会导致recyclerview闪烁

Kotlin 使用diffutil的recyclerview中的submitList()会导致recyclerview闪烁,kotlin,android-recyclerview,listadapter,android-diffutils,Kotlin,Android Recyclerview,Listadapter,Android Diffutils,我有一个从远程源更新的recyclerview,所以它工作得很好,唯一恼人的是,当屏幕被刷新并触发get请求时,即使适配器中没有任何更改导致屏幕闪烁,recyclerview也会被更新,这很恼人 我试着去应付困难,但没有结果 在我的主要片段中: viewModel.fetchTopHeadline() 后面跟着一个观察员 topHeadline.observe(this@FeedFragment, Observer { if(it == null) return@Observ

我有一个从远程源更新的recyclerview,所以它工作得很好,唯一恼人的是,当屏幕被刷新并触发get请求时,即使适配器中没有任何更改导致屏幕闪烁,recyclerview也会被更新,这很恼人

我试着去应付困难,但没有结果

在我的主要片段中:

viewModel.fetchTopHeadline()
后面跟着一个观察员

 topHeadline.observe(this@FeedFragment, Observer {
        if(it == null) return@Observer

        topHeadlineAdapter.submitList(it)

    })
我的适配器:

class TopHeadlineAdapter:ListAdapter
最后是我的diffutilCallback课程:

class TopHeadlineDiffCallback :DiffUtil.ItemCallback<Article>(){
    override fun areItemsTheSame(oldItem: Article, newItem: Article): Boolean {
        return oldItem.id == newItem.id
    }

    override fun areContentsTheSame(oldItem: Article, newItem: Article): Boolean {
        return oldItem == newItem
    }

}
class-TopHeadlineDiffCallback:DiffUtil.ItemCallback(){
覆盖乐趣项目相同(旧项目:文章,新项目:文章):布尔值{
返回oldItem.id==newItem.id
}
覆盖内容相同(旧项:文章,新项:文章):布尔值{
返回oldItem==newItem
}
}

文章类是什么样子的?它是否覆盖了
equals()
方法?只是一个简单的数据类,@Entity(tableName=“TopHeadline”,Index=[Index(value=[“publishedAt”],unique=true)])数据类文章(@PrimaryKey(autoGenerate=true)val-id:Int?=null,val-author:String?,val-content:String?,val-description:String?,val-publishedAt:String?,@Embedded(prefix=“source”?)val-source:source,val-title:String?,val-url:String?,val-urlToImage:String?)如果
RecyclerView
正在设置动画,则表示适配器认为项目已更改。请确保对象具有相同的id和完全相同的内容您是对的,从远程下载后,我正在处理本地数据库中的数据,因此id已更改,这导致新项目id不等于旧项目id