Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 除了这个代码还有其他选择吗?_Android_Sqlite_Google Maps_Google Maps Markers - Fatal编程技术网

Android 除了这个代码还有其他选择吗?

Android 除了这个代码还有其他选择吗?,android,sqlite,google-maps,google-maps-markers,Android,Sqlite,Google Maps,Google Maps Markers,我已经尝试了很多方法来实现这段代码,它包括在从地图中点击元素/标记时显示AlertDialog/描述。问题是,4个标记中有3个有效(但没有显示正确的描述。它看起来像上一个),最后一个强制关闭应用程序,出现logcat错误: CursorIndexOutOfBoundsException:请求索引4,大小为4 代码: @Override protected boolean onTap(int index) { db = openHelper.getWrita

我已经尝试了很多方法来实现这段代码,它包括在从地图中点击元素/标记时显示AlertDialog/描述。问题是,4个标记中有3个有效(但没有显示正确的描述。它看起来像上一个),最后一个强制关闭应用程序,出现logcat错误:

CursorIndexOutOfBoundsException:请求索引4,大小为4

代码:

@Override
        protected boolean onTap(int index) {
            db = openHelper.getWritableDatabase();

            String[] columns_descri = new String[] {COL_DESCRI};

            Cursor cur = db.query(true, TABLE_COORD, columns_descri,null, null, null, null, null, null);

            cur.moveToPosition(index);
                String description = cur.getString(cur.getColumnIndexOrThrow(COL_DESCRI));

                AlertDialog.Builder dialog = new AlertDialog.Builder(Geo.this);
                dialog.setTitle("Infos.");
                dialog.setMessage(description);
                dialog.setPositiveButton("OK", new OnClickListener() {    
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
                dialog.show();

             cur.close();
             db.close();

            return true;
        }

您不应该直接使用索引,相反,您可能在某处有一个适配器,它可以为您提供要显示的对象或行的_id,您可以使用它来伪造精确的请求

编辑 您正在使用ItemizedOverlay。因此,您可以通过以下方式获得抽头项:

public void onTap(int index) {
    Item item = getItem(index);
}

那么我想您可以从项目而不是光标中获取相关信息。

只需使用
cur.moveToPosition(索引-1);

成功了,但同样的问题,导致FC的标记只是切换到另一个。我真的不明白你的答案。您可以发布一个示例代码吗?对于输出列“Description”的游标查询,该列将包含AlertDialogs的内容?我删除它?以及如何指示AlertDialog必须指向该元素并显示其描述?我假设Item类是您自己的,因此您可能知道其中是否有描述,或者是否有引用数据库中行的id。