2010-07-02 134 views

回答

4

ListView有一個setSelected方法,該方法採用列表中項目的索引。

+2

嗨 但選擇列表項是相同的作爲焦點ed listitem? – sarvesh 2010-07-11 18:40:38

+0

AFAIK選擇不同於焦點。 – 2015-11-28 07:22:33

+0

嗨Robby,'setItemsCanFocus(boolean)'是什麼意思? – 2016-01-30 00:40:45

1

我想我是在相同的情況。我希望能夠通過按鈕以編程方式控制listview的焦點。

一個解決方案是處理setFocusableInTouchMode,但我從來沒有達到使其工作。

另一種解決方案是忘記焦點並使用可檢查的listview。首先設置你的列表視圖,以「單選擇模式」,在XML或Java中:Mylistview.setChoiceMode(1)

然後你就可以檢查任何你想要的物品與Mylistview.setItemChecked(position, true)

所以,當你吃午飯的應用程序(OnCreate中),使用Mylistview.setItemChecked(0, true)檢查您的第一個項目。

然後,如果你希望你的按鈕選擇爲例的下一個項目,使用方法:

Mylistview.setItemChecked(Mylistview.getCheckedItemPosition() + 1, true) 

當項目被選中或沒有可以指定的外觀和有不同的預建chekable列表視圖。

如果你想要更多的解釋,看到我post

7

設置選擇和設置重點是兩回事。如果你只想setSelection到一些項目,那麼你可以使用下面的代碼。

mListView.setSelection(position); 

但這絕對不意味着Listview是focused.For聚焦,你必須使用

mListView.requestFocus(); 

有關點擊按鈕改變焦點,你可以將代碼按鈕的onClick()

2

對我來說,問題是由

listView.setItemsCanFocus(true); 
1
  1. 你的ListView的解決應該是這樣的:

    <ListView 
        android:id="@+id/my_list" 
        android:layout_width="wrap_content" 
        android:layout_height="200dp" 
        android:layout_margin="10dp" 
        android:choiceMode="none" 
        android:focusable="true" 
        android:fadeScrollbars="false"> 
        <requestFocus /> 
    </ListView> 
    
  2. mListView.setSelection(3); //or any other number

相關問題