简短版本:
在加载数据时,我的适配器中的数据集数量(从最初4开始)增长。正常对于位置0到3调用getView
。在新数据到达后(getCount
现在返回7),查询位置4到6。相反,我想立即更新前4项。
我的问题 - 当ListView
被解雇时,如何在0到3位置再次getView
查询notifyDataSetChanged
?
此行为的原因可能与我对ListView
中的项目所做的一些动画有关。我的方法基于Chet Haase's example - DataSetObserver
也接收我的适配器onDataSetChange
(除ListView
之外)并通过添加onPreDrawListener
启动动画到ListView
的{{1}}。动画在ViewTreeObserver
中完成(使用onPreDrawListener
),需要300到600毫秒。
如果我取消启动动画的行,则行为就像我想要的那样。对于位置0,1,2,3以及随后的0,1,2,3,4,5,6调用View.animate
。
以下屏幕截图(左侧)显示了此不良状态下列表的内容。将其与logcat屏幕截图进行比较 - 视图上的文本与logcat中“View Text =”之后的文本相匹配。右边是ListView最终决定重新查询位置1-4的getView后最终解决的问题。