设置专注于android中listview的任何项目

时间:2010-07-02 18:31:38

标签: android listview

我有一个listview,其中包含textviews作为其元素。

  1. 现在我希望在启动应用程序时自动聚焦列表的第一项
  2. 当我点击其他视图(例如按钮)时,如何将焦点设置在列表的任何项目上?

5 个答案:

答案 0 :(得分:8)

设置选择和设置焦点是两回事。如果你想将setSelection设置为某个项目,那么你可以使用下面的代码。

    mListView.setSelection(position);

但这绝对不代表Listview是专注的。为了集中注意力,你必须使用

    mListView.requestFocus();

如果要点击按钮更改焦点,可以将代码放在按钮的onClick()上。

答案 1 :(得分:4)

ListView有一个setSelected方法,它接受列表中项目的索引。

答案 2 :(得分:2)

对我来说问题已经解决了

listView.setItemsCanFocus(true);

答案 3 :(得分:1)

我想我处于同样的境地。我希望能够通过按钮以编程方式控制listview的焦点。

一个解决方案是处理setFocusableInTouchMode,但我从来没有实现过它。

另一种解决方案是忘记焦点并使用可检查的列表视图。首先将listview设置为XML或java中的“单选模式”:Mylistview.setChoiceMode(1)

然后,您就可以使用Mylistview.setItemChecked(position, true)

检查所需的任何项目

因此,当您在申请午餐时(OnCreate),请使用Mylistview.setItemChecked(0, true)检查您的第一项。

然后,如果您希望按钮选择下一个例子,请使用:

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

您可以指定检查项目时的外观,以及不同的预先建立的可销售列表视图。

如果您需要更多解释,请参阅我的post

答案 4 :(得分: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