2

開発中のアプリケーションで問題が発生しています。したがって、すべてのテーブルには主キーの _id フィールドがあり、SimpleCursorAdapter を使用してそれらを ListView と Spinner にバインドします。私が知りたかったのは、ListView または Spinner の選択された項目に対応する行と同じ ID を持たせるにはどうすればよいかということです。

奇妙なことは、これが ContextMenu で機能することです。これは、メモ帳の例をそのまま使用しています。

AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
info.id

この ID フィールドはテーブルのRowIDと同じで、アイテムをうまく削除できますが、次のようなことを試してみると:

getListView().setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> adapter, View view,
                int position, long arg) {
            Intent i = new Intent(getApplicationContext(),
                    FuelingList.class);
            long id = view.getId();

ID フィールドはランダムなゴムのようなものです。私の質問は、最初のコード ビットで、AdapterContextMenuInfoが取得している Id と、コードの他の部分でそれを取得するにはどうすればよいかということです。

4

3 に答える 3

3

SimpleCursorAdapter を使用しているため、onItemClick はデータベースの行 ID を渡しています。

        public void onItemClick(AdapterView<?> adapter, View view, int position, long arg)  

このlong arg部分は、実際にはデータベースからの行 ID です。

したがって、コードは次のようになります。

getListView().setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> adapter, View view, 
            int position, long arg) { 
        Intent i = new Intent(getApplicationContext(), 
                FuelingList.class); 
        long id = arg; 
于 2012-05-30T12:45:32.213 に答える
3

を使用していることはわかっているのでSimpleCursorAdapteronItemClickメソッドで呼び出すことができます

public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) {
   String value = ((SimpleCursorAdapter) adapter.getAdapter()).getCursor().getString(COLUMN_INDEX);
}

COLUMN_INDEXカーソルで現在選択されている行からフェッチする列の場所。

代わりに、

adapter.getAdapter().getItem(position)

それを a にキャストして、Cursor同様に機能します。

注 1:AdapterViewは実際にはあなたのListView.

注2:アダプタでSimpleCursorAdapterthenを使用すると、指定した行に配置されたgetItem(position)Cursor

注 3: がCursorある場合、列インデックス (0 ベース) を指定するか、cursor.getString(cursor.getColumnIndex("COLUMN_NAME"))

注 4: Barak のコメントによると、 a を使用する場合、パラメーターargは _ID フィールドからの値です。CursorAdapter_IDarg

于 2012-05-30T11:29:41.803 に答える
0

行の ID を arraylist に格納し、対応する arraylist の位置から行の ID を取得できますか。これは私のために働いた..

protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);

    Intent intent=new Intent(this , Details.class);
    Bundle extras = new Bundle();
    extras.putLong("ID", IDList.get(position));
    intent.putExtras(extras);
    startActivityForResult(intent, SHOW_DETAILS);

}

listview.setonitenclicklistener を使用できます...

于 2012-05-30T12:12:53.720 に答える