2010-07-02 69 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