当列表视图显示时,突出显示列表视图中的第一个元素

时间:2014-01-02 12:22:06

标签: android listview element highlight

我有一个列表视图。 在列表视图的每个元素上,您可以触摸并触发某些内容(即吐司)。 每次触摸任何元素时,它都必须保持突出显示。

我希望列表视图中的第一个元素在第一次显示列表视图时默认显示,这是在您启动应用程序时。

现在我已经全部工作了,除了第一次在第一个元素中突出显示。我的意思是,该元素甚至被触发,但在启动应用程序时不会突出显示。

有什么想法吗?

我已经尝试过很多关于stackoverflow的内容,但是没有工作,我认为这应该是非常普遍的事情。

我尝试过setSelection,setSelected,获取视图.....

我虽然它像旋转器一样工作,但事实并非如此。

非常感谢你们!

您可以在此处查看课程代码 - > http://goo.gl/ndY0Ni

如果你们中的任何一个想要尝试,我已经做了一个更简单的例子 - > https://dl.dropboxusercontent.com/u/83259317/main.rar

解决方案:感谢@Jiahao提供解决方案。

我做了一个小小的项目,以便你检查出来 - > http://goo.gl/35s5Dc

2 个答案:

答案 0 :(得分:1)

SetItemChecked适用于列表。问题是当您的行视图不是Checkable的实例时,它不会显示。

相反,将标记所谓的“已激活”。

最简单的解决方案是自定义rowView以显示状态Activated:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_selected="true"
        android:drawable="@drawable/listview_selector_pressed"/>
    <item
        android:state_pressed="true"
        android:drawable="@drawable/listview_selector_pressed"/>
    <item
        android:state_activated="true"
        android:drawable="@drawable/listview_selector_pressed"
        />
    <item
        android:drawable="@android:color/white" />
</selector>

答案 1 :(得分:0)

要将ListView项设置为突出显示,请使用以下代码:

getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); // Highlight one at a time.
getListView().setItemChecked(position, true);

其中position是要高亮显示的ListItem的编号,所以要突出显示您要执行的第一个项目:

  getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
  getListView().setItemChecked(0, true);

这假设您正在使用ListActivity。 (如果不是只调用实际的ListView对象上的方法)。