在我开始列表中显示的完整数据库表项目之前,我想更好地了解更改数据库数据时UI会发生什么。
想象一下,使用游标适配器显示1000个项目的列表。现在,在列表中添加/删除了一些行。现在需要将新游标加载到Cursor适配器中(使用changeCursor)。
向用户显示的列表(ListView)会发生什么?用户是否看到此重新加载?列表是否保持在同一位置?
答案 0 :(得分:4)
快速测试后,看起来适配器使用位置进行导航。
交换光标后,适配器停留在前一个位置。
如果新光标的可用项目较少(因此位置较少),则最后一个可见项目将是光标中的最后一项。
基本上,只要直到最后一个可见项目的项目没有改变,列表就不会在视觉上移动。
至于技术方面:
首先changeCursor
与swapCursor
的行为相同,唯一的区别是changeCursor
也会关闭上一个游标。
调用swapCursor
并且新游标不为空后,将调用notifyDataSetChanged
。
如果您在交换之前创建了足够的convertViews
(可重复使用的视图),则会在可见视图上调用bindView
,以更改文本/图像或将w / e绑定到您的视图。用户显然可以看到这种变化。
如果您没有足够的观看次数,则会调用newView
并在调用bindView
之前创建视图,如上所述。同样,这将对用户可见,因为新项目已添加到列表中。