我的SQLite数据库中有一个描述列,其中包含一些在贴到每个标记时要显示的文本。每个标记都有自己的描述。问题是当我点击一个标记时,我显示所有其他AlertDialog
。我正在使用以下代码:
@Override
protected boolean onTap(int index) {
db = openHelper.getWritableDatabase();
String[] result_columns = new String[] {COL_DESCRI};
Cursor cur = db.query(true, TABLE_COORD, result_columns, null, null, null, null, null, null);
cur.moveToFirst();
while (cur.isAfterLast() == false) {
String description = cur.getString(cur.getColumnIndexOrThrow("description"));
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.moveToNext();
}
cur.close();
db.close();
return true;
}
onTap
函数似乎正在运作:
protected boolean onTap(int index) {
db = openHelper.getWritableDatabase();
String[] result_columns = new String[] {COL_DESCRI};
Cursor cur = db.query(true, TABLE_COORD, result_columns, null, null, null, null, null, null);
cur.moveToPosition(index);
String description = cur.getString(cur.getColumnIndexOrThrow("description"));
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;
}
我知道我必须为每个AlertDialog
分配一个索引,但我不知道该怎么做。我试图解决这个问题,但我似乎无法做到这一点。有关如何解决问题的任何建议吗?
答案 0 :(得分:2)
您似乎正在循环搜索结果中的所有项目。
cur.moveToFirst()将您带到第一个项目,然后 cur.moveToNext(); 将您带到每次迭代的下一个项目。然后,您将显示每个项目的警告对话框!
每次用户点击某个项目时,您真的不需要加载这样的数据,但最简单的[不推荐]修复代码的方法是使用 cur.moveToPosition(index)< / strong>而不是你的循环。