gpt4 book ai didi

android - 让 BaseAdapter.hasStableIds() 返回 true 解决了什么问题?

转载 作者:搜寻专家 更新时间:2023-11-01 07:57:25 24 4
gpt4 key购买 nike

我一直在努力理解 BaseAdapter.hasStableIds() 是如何工作的。

据我所知,从此方法返回 true 有助于适配器确定是否必须重新创建 View 或保持不变。我猜适配器以某种方式将位置映射到 id,如果映射保持不变,则在调用 notifyDataSetChanged() 时适配器什么都不做。

但是,如果数据已更改而 id(和位置)保持不变,这不会成为问题吗?如果这确实是一个问题,那么返回 true 帮助的确切时间是什么时候?

最佳答案

hasStableIds() == true 表示基础数据项的项目 ID 不会更改,而不是该项目的数据永远不会更改。例如。同一个联系人具有相同的 ID,无论它出现在列表中的什么位置,但它的名字可能会随着时间而改变——用户可以编辑它、添加昵称等。可以想象在每个项目没有某个稳定 ID 的情况下显示数据(也许数据不是您的,您无法访问适合从 getItemId() 返回的唯一 ID,例如与 long 返回类型不兼容) .

在浏览 AdapterViewAbsListView 的源代码时,在我看来,当您在 ListView/GridView 上设置选择模式时,这最有用,因为那时该 View 可以更有效地管理选中的项目 ID,它们是可视状态,包括跨数据集更改,其中这些选中的项目可能已移动到新位置(但它们具有相同的 ID)。

关于android - 让 BaseAdapter.hasStableIds() 返回 true 解决了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26206334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com