我有一个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
。我在俯瞰什么?现在我只是使用一个隐藏的文本字段,但我想知道我做错了什么。
答案 0 :(得分:0)
设置标签时是否尝试过此操作?
view.setTag(new Integer(cursor.getInt(columnIndex)));
答案 1 :(得分:0)
也许你的“if”语句只返回false,因此没有设置Tag值?
答案 2 :(得分:0)
onListItemClick()
为您提供了一个视图,该视图是列表中的行。 ViewBinder
将值绑定到此行内的TextView。因此,您拨打setTag()
的视图与您拨打getTag()
的视图不同。
您可以扩展SimpleCursorAdapter,以便在正确的视图上调用setTag()
,也可以在v
中获取onListItemClick()
的第一个子视图,并获取该标记。< / p>