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

您在设置标签时是否尝试过此操作?

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

也许您的“if”语句只是返回 false,因此没有设置任何 Tag 值?

于 2012-02-19T12:49:22.333 回答
0

onListItemClick()为您提供列表中的行的视图。ViewBinder将值绑定到该行内的 TextView。因此,您调用的视图setTag()与您调用的视图getTag()不同。

您可以扩展 SimpleCursorAdapter 以便调用setTag()正确的视图,或者您可以获取vin的第一个子视图onListItemClick()并获取它的标记。

于 2012-12-02T18:53:23.763 回答