2012-02-19 62 views
1

總是空我有一個ListView說我有CursorAdapter這樣的填充:getTag()在onListItemClick

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

onListItemClick()爲您提供了一個視圖,該視圖是列表中的行。 ViewBinder將值綁定到此行內的TextView。因此,您撥打setTag()的視圖與您撥打getTag()的視圖不一樣。

您可以擴展SimpleCursorAdapter,以便您可以在正確的視圖上調用setTag(),也可以在onListItemClick()中獲得v的第一個子視圖並獲取該標記。

0

您是否在設置標籤時嘗試過?

view.setTag(new Integer(cursor.getInt(columnIndex))); 
+0

setTag將只接受字符串 – DannyT 2012-02-19 15:38:53

0

也許你的「if」語句只是返回false,因此沒有設置Tag值?

+0

的好處,但我沒有在代碼片段中包含該字符串,我在實際項目中返回true。 – DannyT 2012-02-19 15:39:53