2009-11-03 114 views
2

我一直在嘗試設置OnKeyListener,但我不確定如何在View.OnKeyListenerListView上獲得所選行。 v參數總是給我ListView,而不是選定的行。任何想法如何解決這個問題?謝謝。爲ListView設置setOnKeyListener

listView.setOnKeyListener(new OnKeyListener() { 

    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     //.... 
    } 

} 
+0

你可以調用你的列表視圖上的getCheckedItemPosition來確定這個嗎?因爲:API等級1 返回當前選中的項目。結果僅在選擇模式設置爲CHOICE_MODE_SINGLE時有效。 返回 *當前檢查項目或INVALID_POSITION的,如果沒有選定 見位置也 * setChoiceMode(INT) – I82Much 2009-11-03 22:55:50

回答

7

您可以使用AbsListView.getSelectedView()方法:

public boolean onKey(View v, int keyCode, KeyEvent event) { 
    ListView listView = (ListView) v; 
    if (listView.getSelectedView() != null) { 
     // (cast if necessary) and use selected view 
    } 
} 

如果你有興趣在選定的項目位置,ID或關聯對象,你可以使用相應AdapterView.getSelectedItemPosition()AdapterView.getSelectedItemId()AdapterView.getSelectedItem()方法。

+0

什麼可以是一個問題,如果'getSelectedView()'總是返回null,即使我把' setSelection(index)'就在它上面嗎? – Gio 2012-09-22 14:03:48