我一直在试图理解BaseAdapter.hasStableIds()
是如何工作的。让BaseAdapter.hasStableIds()返回真正解决什么?
从我读过的内容中,返回true
可以帮助适配器确定视图是否必须重新创建或保持不变。我猜测适配器以某种方式将位置映射到一个id,并且如果映射保持不变,那么调用notifyDataSetChanged()
时,适配器不执行任何操作。
但是,如果数据已更改,而id(和位置)保持不变,这不会是一个问题吗?如果这确实是一个问题,那么到底什么时候才能真正恢复真正的帮助?
谢谢你的解释。你可以看看这个:[Android - StableIDs是什么意思?](http://stackoverflow.com/a/18217552/3954358)?那么给定的答案是错误的? – Athena 2014-10-05 20:18:11
说实话,我不是100%确定的。特别是'ListView'是Android中最复杂的视图类之一,它背后的代码将需要相当长的时间来包装头部。我认为在回收意见方面可能会有一些优化,但对我来说这似乎很奇怪; ListView应该为每一行调用'getView()',然后在'notifyDataSetChanged'之后显示每一行,以便填充每一行中的数据...... – Karakuri 2014-10-06 05:44:57
** ListView应该为每一行调用getView()在notifyDataSetChanged后显示反正**你是怎么想的? – 2017-08-02 18:03:15