4

我从我的数据库中检索信息,这些信息都在游标中。现在我需要遍历光标中的每个项目以检索 lng lats 和要在地图上显示的名称。

Cursor c = mDbHelper.fetchSpot(15);
        startManagingCursor(c);

        double lat = Double.parseDouble(c.getString(c.getColumnIndexOrThrow(ParkingSpotDBAdapter.KEY_LAT)));
        double lng = Double.parseDouble(c.getString(c.getColumnIndexOrThrow(ParkingSpotDBAdapter.KEY_LNG)));
        String name = c.getString(c.getColumnIndexOrThrow(ParkingSpotDBAdapter.KEY_ADDRESS));

我有一个称为fecthAllSpots()此的方法返回游标中的许多项目,我如何从该游标中的每一行检索每个 lng lat 和 name?

4

2 回答 2

9

您可以使用 while 循环来迭代游标返回的所有行。

while(c.moveToNext()){
    double lat = Double.parseDouble(c.getString(c.getColumnIndexOrThrow(ParkingSpotDBAdapter.KEY_LAT)));
    double lng = Double.parseDouble(c.getString(c.getColumnIndexOrThrow(ParkingSpotDBAdapter.KEY_LNG)));
    String name = c.getString(c.getColumnIndexOrThrow(ParkingSpotDBAdapter.KEY_ADDRESS));
}

当然,您必须对 lat、lng 和 name 变量做一些事情,因为它们将在每次迭代中被覆盖。我建议你实现一个 DBLocation 类,它可以存储一个位置的名称、经度和纬度。然后,您可以将您从光标创建的所有对象存储在数组或列表中。

于 2011-06-18T12:20:06.887 回答
5

第一的。您可以只使用光标上的 getInt、getLong 等方法来检索值,而不是事后解析它们。

问题:

这是语法:

首先查询数据库以获取游标。

接下来对光标进行空检查(以防万一,因为它有时会发生),也可以使用 try catch 块。

接下来写:

    if(c.moveToFirst()){
do{
// YOUR CODE FOR EACH CURSOR ITEM HERE.
// the cursor moves one field at a time trhough it's whole dataset
}while(c.moveToNext())
}

最后关闭游标,或者如果它是托管查询,则不执行任何操作,活动将为您关闭它。记住所有这些都在一个块中,除了您将要检查的所有其他内容,请考虑游标的 nullPointerException。

于 2011-06-18T12:15:11.903 回答