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