【问题标题】:Get data from SQLite database to intent through "onItemClick" on item in ListView Android通过“onItemClick”在ListView Android中的项目上从SQLite数据库获取数据到意图
【发布时间】:2011-11-27 12:13:59
【问题描述】:

我真的需要你的帮助。

我有一个包含经纬度数据的数据库,这里是示例:

id_____姓名_____强>纬度_________long

1_____一号酒店___6.1234______-106.12345

2____酒店二____6.54321_____-107.23456

3___三号酒店___7.12345_____-106.98765

Android 上 ListView 中的数据显示。我使用 onItemClick,所以如果我单击 ListView 中的一项,它将转到

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

但问题是,如果我单击 ListView 中的一项,则上述意图中的 lat_var 和 long_var 中的数据不会给我数据库中的 lat 和 long 数据...

这是我的代码,你可以编辑它吗,所以如果我单击 ListView 中的一项,它将为我提供数据库中的经纬度数据。例如,如果我点击酒店 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);

        }

我不知道问题是我的语法还是什么。请修复我的代码。我真的很感谢任何回答这个问题的人......

【问题讨论】:

    标签: android sqlite syntax android-intent onitemclick


    【解决方案1】:

    首先,只需要一个查询。无需查询您的表两次。 其次,您需要使用您选择的参数来调整您的查询:

    @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 这样的强类型语言中没有必要)

    【讨论】:

    • 谢谢你的答案,我只是用它。但是如何使用 getListAdapter() 方法。就我而言,您可以提供代码吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多