简短版本:我的适配器中的数据集数量在加载数据时会增加(从最初的 4 个)。getView
对于位置 0 到 3 正常调用。新数据到达后(getCount
现在返回 7),将查询位置 4 到 6。相反,我想立即更新前 4 个项目。
我的问题 - 如何在被解雇时再次ListView
查询getView
位置 0 到 3 ?notifyDataSetChanged
此行为的原因可能与我对ListView
. 我的方法大致基于Chet Haase 的示例- aDataSetObserver
还接收我的适配器onDataSetChange
(除了)并通过将 an 添加到's来ListView
启动动画。动画在(使用)中完成,耗时 300 到 600 毫秒。如果我评论启动动画的行,那么行为就像我想要的那样。在位置 0、1、2、3 以及随后的 0、1、2、3、4、5、6 位置调用。onPreDrawListener
ListView
ViewTreeObserver
onPreDrawListener
View.animate
getView
下面的屏幕截图(左)显示了列表在这种不希望的状态下的样子。将此与 logcat 屏幕截图进行比较 - 视图上的文本与 logcat 中“View Text =”之后的内容相匹配。右边是在 ListView 最终决定重新查询 getView 的位置 1-4 之后它最终解决的问题。