2014-01-21 88 views
8

我有一個簡單的ListView,其中一些項目的setChoiceMode設置爲ListView.CHOICE_MODE_SINGLE,這意味着當我觸摸某個項目時,它將突出顯示。這樣,用戶可以看到菜單選項(該ListView是菜單)選擇:以編程方式在ListView中設置激活的項目

listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

不過,我想改變的代碼,選擇(不通過觸摸)。我試過這個:

listView.setSelection(0); 

但它似乎沒有效果。可能是因爲選擇和激活是不同的概念。沒有可用的setActivated(int)方法。

+1

嘗試'.setItemChecked(position,true);' –

+2

@Shayanpourvatan就是這樣。你的評論應該是一個答案:)。 –

回答

17

你可以用下面的代碼選擇項:

listView.setItemChecked(position, true); 
+0

我在onCreate()方法中嘗試了這個方法來初始化列表並設置適配器。還有另一個地方,我應該這樣稱呼嗎? ..謝謝 – gnB

+1

@gnB你必須使用此代碼後將適配器設置爲您的listView –

0

該文檔說If in touch mode, the item will not be selected but it will still be positioned appropriately

所以,你需要使用ListView.setItemChecked(int position, boolean checked)方法listView.setItemChecked(position, true)設置位置選擇

1

使用這種方法爲我工作

listView.performItemClick(listView, position, listView.getItemIdAtPosition(position)); 
+0

您好,我試過這個,但最後一個參數調用的值返回0.我試過這裏:long itemId = myListView.getItemIdAtPosition(0); ,我從中得到一個例外。我在onCreate()方法中調用了這個方法..是否有另一個地方我應該調用它?謝謝 – gnB

相關問題