1

我的 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;
        }

我知道我必须为 each 分配一个索引AlertDialog,但我不知道该怎么做。我试图解决这个问题,但我似乎做不到。关于如何解决问题的任何建议?

4

1 回答 1

2

您似乎正在遍历结果中的所有项目。

cur.moveToFirst()将您移动到第一项,然后cur.moveToNext(); 在每次迭代中将您移至下一个项目。然后,您将显示每个项目的警报对话框!

您确实不需要在每次用户单击项目时都加载这样的数据,但是修复代码的最简单 [不推荐] 方法是使用cur.moveToPosition(index)而不是循环。

于 2011-08-23T16:09:44.513 回答