【问题标题】:Updating a ListView with frequently changing data in Android在 Android 中使用频繁更改的数据更新 ListView
【发布时间】:2011-04-18 09:48:36
【问题描述】:

this 线程中发布的问题询问如何在数据更改时更新 ListView。但是,它假定在 ListView 中修改的数据存储在数据库中。因此,在将更改提交到数据库后,只需调用 requery() 即可更新 ListView UI。

ListView修改后的数据没有存入数据库怎么办?

例如,如果 ListView 中的每个项目都根据用户当前的 GPS 坐标显示到特定地标的距离,那么在用户移动时使用更新后的距离更新视图的正确方法是什么?为了方便起见,是否应该将距离简单地存储在数据库中,以便 requery() 更新 UI?如果不需要持久保存(经常变化的)GPS 数据,这似乎不是正确的方法。

编辑:为了澄清,我特别想解决一些数据存储在数据库中的情况(例如地标的坐标),但是,经常变化的数据是动态计算的(例如,距离)。

【问题讨论】:

    标签: android android-listview


    【解决方案1】:

    ArrayAdapter 可以用来代替 CursorAdapter。

    notifyDataSetChanged() 方法可用于告诉 ListView 通过重新查询分配给它的 ArrayAdapter 来刷新自身。

    【讨论】:

    • 我应该澄清一下,ListView 中的某些数据确实需要存储在数据库中(例如:上例中的地标 GPS 坐标)。因此,我是否应该将数据库查询返回的数据转换为数组并使用 ArrayAdapter?
    【解决方案2】:

    我建议使用ArrayAdapter 而不是CursorAdapter(用于根据光标> 数据库查询填充ListView)

    ArrayAdapter

    您应该更新存储坐标数据的数组数据。当它发生变化时,请致电adapter.notifyDataSetChanged() 以使用最新的数组数据更新您的列表

    希望有帮助

    【讨论】:

      猜你喜欢
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      • 2013-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多