4

データベースから情報を取得しますが、それはすべて Cursor にあります。ここで、カーソル内の各項目を調べて、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 などのメソッドをカーソルで使用して、後で値を解析する代わりに値を取得できます。

質問:

ここにシンタックスがあります:

最初にデータベースにクエリを実行してカーソルを取得します。

次に、カーソルの null チェックを行います (念のため、時々発生するため)。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 に答える