Android - 如何更改CursorAdapter中的光标会影响UI?

时间:2014-09-18 00:10:09

标签: android listview simplecursoradapter android-cursoradapter

在我开始列表中显示的完整数据库表项目之前,我想更好地了解更改数据库数据时UI会发生什么。

想象一下,使用游标适配器显示1000个项目的列表。现在,在列表中添加/删除了一些行。现在需要将新游标加载到Cursor适配器中(使用changeCursor)。

向用户显示的列表(ListView)会发生什么?用户是否看到此重新加载?列表是否保持在同一位置?

1 个答案:

答案 0 :(得分:4)

快速测试后,看起来适配器使用位置进行导航。

交换光标后,适配器停留在前一个位置。

如果新光标的可用项目较少(因此位置较少),则最后一个可见项目将是光标中的最后一项。

基本上,只要直到最后一个可见项目的项目没有改变,列表就不会在视觉上移动。


至于技术方面:

首先changeCursorswapCursor的行为相同,唯一的区别是changeCursor也会关闭上一个游标。

调用swapCursor并且新游标不为空后,将调用notifyDataSetChanged

如果您在交换之前创建了足够的convertViews(可重复使用的视图),则会在可见视图上调用bindView,以更改文本/图像或将w / e绑定到您的视图。用户显然可以看到这种变化。

如果您没有足够的观看次数,则会调用newView并在调用bindView之前创建视图,如上所述。同样,这将对用户可见,因为新项目已添加到列表中。