1

私は次のようListViewに入力しているものがありCursorAdapterます:

SimpleCursorAdapter.ViewBinder viewBinder = new SimpleCursorAdapter.ViewBinder() {
    public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
        if(columnIndex == cursor.getColumnIndex(MyTableColumns._ID))
        {
            view.setTag(cursor.getInt(columnIndex));
        }
        // some other stuff
    }
};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.my_item_renderer, cursor, from, to);
adapter.setViewBinder(viewBinder);

目的は、クリックされたリストアイテムからIDを取得することです。

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    Object obj = v.getTag();
    int myId = Integer.parseInt(obj.toString());
}

ただし、これは常にを返しnullます。私は何を見落としていますか?今のところ、非表示のテキストフィールドを使用していますが、何が間違っているのか知りたいです。

4

3 に答える 3

0

たぶん、あなたの「if」ステートメントは単にfalseを返し、したがってタグ値は設定されませんか?

于 2012-02-19T12:49:22.333 に答える
0

onListItemClick()リスト内の行であるビューを提供します。ViewBinderこの行内のTextViewに値をバインドします。したがって、呼び出すビューは、呼び出すsetTag()ビューと同じではありませんgetTag()

SimpleCursorAdapterを拡張setTag()して正しいビューを呼び出すか、inの最初の子ビューを取得してそのタグを取得することができvますonListItemClick()

于 2012-12-02T18:53:23.763 に答える
0

タグを設定するときにこれを試しましたか?

view.setTag(new Integer(cursor.getInt(columnIndex)));
于 2012-02-19T11:05:47.083 に答える