我们如何使用SimpleCursorAdapter将数据库中的ID用作Listview ID?

时间:2013-05-03 09:22:09

标签: java android sql

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

SQL的一部分:subjectID为_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

}

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

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

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

row_id = arraylist.get(position);

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

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

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