0

私は Android を初めて使用し、データベースとリストビューの作業を開始しました。作成したリストビューの ID として subjectID を使用したいと考えています。アイテムがタップされたときに、その 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

}
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 に答える