在启动活动android时,将第一项放在列表视图中

时间:2015-04-20 10:05:56

标签: java android listview focus autofocus

我正在开发一个应用程序,当我按下按钮时,它会启动一个包含名为mContactList的列表视图的新活动(ContactList.java)。当活动开始时,我希望listview的第一项能够自动聚焦。

我尝试过类似的东西:

ContactList.java

mContactsList.requestFocus(mContactsList.getFirstVisiblePosition());

我还创建了这两个xml资源,以确保在聚焦视图时,在listview的项目周围显示一个矩形:

selected_rectangle.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <stroke
        android:color="@color/blue"
        android:width="5dp"/>
</shape>

selector_contact_list.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true"
            android:drawable="@drawable/selected_rectangle"/> </selector>

由于某些原因,此代码不起作用,我无法将焦点设置在列表的第一项上(因为列表的第一项周围没有出现任何矩形)。

有人能告诉我发生了什么事吗?

2 个答案:

答案 0 :(得分:1)

请注意,设置焦点和设置选择是两回事......我认为你的意思是第二个,如果有的话试试这个:

listViewName.setSelection(positionOfItem);

如果不起作用,请在调用requestFocusFromTouch()方法之前尝试setSelection()

如果这不起作用,试试这个:

listViewName.setItemChecked(positionOfItem, true);

或者这个:

listViewName.smoothScrollToPosition(positionOfItem);

对于其他解决方案,请尝试以下链接中的答案:Android ListView setSelection() does not seem to work

答案 1 :(得分:0)

使用

listview.setselection(thenumber/position);