【问题标题】:Android getItemId() return the same id many times in recyclerviewAndroid getItemId() 在recyclerview中多次返回相同的id
【发布时间】:2019-12-21 10:26:47
【问题描述】:

我正在尝试在我的应用程序中实现setHasStableId(true)。当我通过以下方式覆盖RecyclerView 适配器中的getItemId() 方法时:

override fun getItemId(position: Int): Long { position.hashCode().toLong()}

应用程序告诉我多次返回相同的项目 ID。列表中的项目没有重复,对于用户来说一切正常,但我收到此错误。

两个不同的 ViewHolder 具有相同的稳定 ID。适配器中的稳定 ID 必须是唯一的,并且不应更改。

注意:这是一个带有 3 个视图的适配器

非常感谢您的帮助!

【问题讨论】:

  • @MikeM。感谢您的回复,我忘记发布错误,现在更新了问题,您可以再看一下吗?谢谢

标签: android kotlin android-recyclerview adapter


【解决方案1】:

请确保您的视图持有者具有不同的 ID。 由于错误告诉您所有视图持有者都具有相同的 id id=43916,即所有 3 个 ViewHolders 具有相同的 id。

请仔细检查您的视图持有者 ID。

【讨论】:

  • Viewholders 在我的代码中已经有不同的 id,问题是因为它们具有我们为 RecyclerView @intellignt_idiot 设置的相同的稳定 id
【解决方案2】:

您只需要为 viewHolders 提供不同的 ID,您可以简单地编写

override fun getItemId(position: Int): Long = position

每个元素的位置都是唯一的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    相关资源
    最近更新 更多