2011-05-08 54 views
0

我需要在列表視圖中處理選定的行上長按一下行,但因爲我正在使用菜單我不能覆蓋onclicklistener。我試圖做到這一點:處理onlongclicklistener的菜單

listView.setOnLongClickListener(new OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
     taskPosition = listView.getSelectedItemPosition(); 
     return true; 
    } 
}); 

但它不起作用。誰能幫我?

+0

你能比「不工作」更具體嗎? – hammar 2011-05-08 14:40:00

+0

好吧,我得到了listView.getSelectedItemPosition()的值;調試器是等於-1我需要處理選擇列表視圖longclick並使用它在onContextItemSelected執行操作 – khwileh 2011-05-08 14:50:47

回答

2

我得到了listView.getSelectedItemPosition()的值;等於-1

當然。通常不會選擇行。僅在用戶使用定點設備(D-pad,軌跡球等)時才選擇行。

我需要處理的列表視圖選擇longclick,並用它在onContextItemSelected執行操作

不,你不知道。您可以使用上下文菜單您使用帶窗口小部件的長按監聽器。你不使用兩者。

如果您試圖確定從onContextItemSelected()here is a sample project長期點擊哪一行,那麼將證明對您而言,如果您的適配器是ArrayAdapter。如果您正在使用CursorAdapter,here is a different sample project這將爲您演示。

+0

感謝您的答案,但我認爲我不明白我的問題,所以我有示例澄清它,在Android 2.2中呼叫日誌,如果你長時間點擊電話號碼列表,並得到菜單彈出菜單處理從通話記錄列表中選擇的號碼,那似乎我需要的是如何保存選擇的列表視圖和使用它在菜單 – khwileh 2011-05-09 07:00:06

+0

@Hassan Khwieh:你可以從提供的ContextMenu.ContextMenuInfo對象中找出在onCreateContextMenu()中長按的行。這些機制與我所展示的例子相同,儘管我延遲查看這個對象直到「onContextItemSelected()」。 – CommonsWare 2011-05-09 09:15:36

+0

這就是很多謝謝 – khwileh 2011-05-09 09:42:51