2010-05-25 14 views
0

我的問題: 在我開始使用OnLongClickListener之前,有沒有更好的方法在列表視圖具有自定義適配器時傳遞「點擊的內容以創建此上下文菜單」信息?當我的列表視圖有一個自定義適配器時,爲什麼MenuItem.AdapterContextMenuInfo爲空?

這裏還有一些細節:

通常情況下,我的代碼可以做這樣的事情:

public boolean onContextItemSelected(MenuItem item) { 
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 

,然後去和快樂。

但是,自從我引入一個自定義適配器後,item.getMenuInfo()就是null。 這是一個大問題,因爲我的代碼不再知道哪個項目被點擊。 (我的自定義適配器使每個列表行一個複選框和一個文本視圖)

我試過,但失敗: 創建了自己的特殊AdapterContextMenuInfo(稱爲「HasAViewMenuInfo」),但是當我通過它在此方法中,它結束了在菜單中被空

public void onCreateContextMenu(ContextMenu menu, View v, 
     ContextMenuInfo menuInfo) 
{ 
    super.onCreateContextMenu(menu, v, new HasAViewMenuInfo(v)); 

回答

1

我懷疑你的問題是:

我的自定義適配器使每個列表行 一個複選框和一個文本視圖

暫時擺脫複選框。如果您的上下文菜單現在可用,那麼複選框就是問題所在。考慮切換到CheckedTextView,而不是使用ListView來更好地支持(例如,使用CHOICE_MODE_MULTIPLE,setItemChecked())。

我用自定義適配器使用上下文菜單,並沒有任何問題。但是,我沒有在我的行中使用複選框。

相關問題