【问题标题】:Android - How changing cursor in a CursorAdapter affects UI?Android - 在 CursorAdapter 中更改光标如何影响 UI?
【发布时间】:2014-09-18 00:10:09
【问题描述】:

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

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

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

【问题讨论】:

    标签: android listview simplecursoradapter android-cursoradapter


    【解决方案1】:

    经过快速测试,看起来适配器使用位置来导航。

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

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

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


    至于技术方面:

    首先changeCursor 的作用与swapCursor 相同,唯一的区别是changeCursor 也会关闭前一个光标。

    一旦swapCursor 被调用并且新游标不为空,notifyDataSetChanged 就会被调用。

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

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

    【讨论】:

    • 作为在内存列表中使用 ListAdapter 的人,我从您的回答中了解到,更改光标和更改列表之间没有太大区别。谢谢。
    猜你喜欢
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多