0

我是 Android 新手,开始研究数据库和列表视图。我想使用 subjectID 作为我创建的列表视图的 ID。这样我就可以在点击项目时使用该 ID 从数据库中查询记录。我知道这被问了很多次,但似乎对我没有任何作用。在此先感谢您的帮助。

SQL的一部分:subjectID as _id

我有这段代码:

 String[] dataColumns = { "subjectName","shortemail", "lastScanDate", "lastScore" } ;
int[] viewIDs = { R.id.list_column1 , R.id.list_column2, R.id.list_column3, R.id.list_column4  }; 


SimpleCursorAdapter adapter
        = new SimpleCursorAdapter(
                  this,                             // The Context for the ListView
                  R.layout.subject_line,          // Points to the XML for a list item
                  cursor,                           // The cursor to get items from
                  dataColumns,
                  viewIDs
          );


    setListAdapter(adapter);
    db.close();



public void onListItemClick(ListView l, View v, int position, long id) {

//codes here

}
4

2 回答 2

1

如果你阅读 CursorAdapter 的源代码,你会发现:

   public long getItemId(int position) {
        if (mDataValid && mCursor != null) {
            if (mCursor.moveToPosition(position)) {
                return mCursor.getLong(mRowIDColumn);
            } else {
                return 0;
           }
        } else {
           return 0;
       }
    }

mRowIDColumn并被分配:

 mRowIDColumn = cursorPresent ? c.getColumnIndexOrThrow("_id") : -1;

这意味着,如果您使用“_id”作为数据库 id,getItemId()则已经是数据库的 ID。

于 2013-05-03T09:32:22.000 回答
0

只需获取 row_ids 并存储在ArrayList<Integer> arraylist = new ArrayList<Integer>;

然后在您onItemClick()插入此代码:

row_id = arraylist.get(position);

startActivity(new Intent(PresentActivity.this, NextActivity.class).putExtra("row_id", row_id));

希望这会帮助你。如果您需要进一步的帮助,请告诉我。

这不是唯一的方法,我们可以做到这一点。这是最简单的方法。

于 2013-05-03T09:53:32.840 回答