3

私は本当にあなたの助けが必要です。

緯度と経度のデータを含むデータベースがあります。ここに例を示します。

id_ _ _ _名前_ ____ lat _ _ _ ____ _long

1_ _ ___ホテルワン_ _ 6.1234 _ _ _ __ -106.12345

2_ _ __ホテルツー_ ___ 6.54321 _ __ _ _ -107.23456

3_ _ _ホテルスリー_ _ 7.12345 _ _ _ _ -106.98765

Android の ListView にデータが表示されます。そして、私はonItemClickを使用しているので、ListViewの項目の1つをクリックすると、

Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?f=d&saddr=&daddr="+lat_var+","+long_var))

しかし、問題は、ListView の項目の 1 つをクリックすると、上記の目的で lat_var と long_var のデータがデータベースから緯度と経度のデータを取得できないことです...

ここに私のコードがあります。編集していただけますか。ListView の項目の 1 つをクリックすると、データベースから緯度と経度のデータが得られます。たとえば、ホテル 2 をクリックすると、lat_var が 6.54321 に変更され、long_var が -107.23456 に変更されます。

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub
            SQLiteDatabase dbs = dbHotelHelper.getReadableDatabase();

            String get_lat = "SELECT lat FROM hoteltbl";
            Cursor result_lat = dbs.rawQuery(get_lat, null);
            double lat_var = result_lat.getColumnIndex("lat");
            String get_long = "SELECT lat FROM hoteltbl";
            Cursor result_long = dbs.rawQuery(get_long, null);
            double long_var = result_long.getColumnIndex("long");

            Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?f=d&saddr=&daddr="+lat_var+","+long_var));
            startActivity(intent);

        }

問題が私の構文なのか、それとも何なのかわかりません。コードを修正してください。これに答えてくれた人には本当に感謝しています...

4

1 に答える 1

4

まず、必要なクエリは 1 つだけです。テーブルを 2 回クエリする必要はありません。次に、選択したパラメーターを使用してクエリを調整する必要があります。

@Override
protected void onListItemClick(ListView listView, View view, int position, long id) {id) {    
    String selectedItem = (String) getListAdapter().getItem(position);
    String query = "SELECT lat, long FROM hoteltbl WHERE name = '" + selectedItem + "'";
    SQLiteDatabase dbs = dbHotelHelper.getReadableDatabase();
    Cursor result = dbs.rawQuery(query, null);
    result.moveToFirst();

    double lat = result.getDouble(result.getColumnIndex("lat"));
    double long = result.getDouble(result.getColumnIndex("long"));

    ....

このコードは StackOverflow エディターで作成されたものであり、そのままでは機能しない可能性がありますが、アイデアは得られます。

(また、変数にサフィックス「_var」または「_long」を追加しないでください。Java のような厳密に型指定された言語では必要ありません)

于 2011-11-27T12:26:34.933 に答える