我有一个列表视图。 在列表视图的每个元素上,您可以触摸并触发某些内容(即吐司)。 每次触摸任何元素时,它都必须保持突出显示。
我希望列表视图中的第一个元素在第一次显示列表视图时默认显示,这是在您启动应用程序时。
现在我已经全部工作了,除了第一次在第一个元素中突出显示。我的意思是,该元素甚至被触发,但在启动应用程序时不会突出显示。
有什么想法吗?
我已经尝试过很多关于stackoverflow的内容,但是没有工作,我认为这应该是非常普遍的事情。
我尝试过setSelection,setSelected,获取视图.....
我虽然它像旋转器一样工作,但事实并非如此。
非常感谢你们!
您可以在此处查看课程代码 - > http://goo.gl/ndY0Ni
如果你们中的任何一个想要尝试,我已经做了一个更简单的例子 - > https://dl.dropboxusercontent.com/u/83259317/main.rar
解决方案:感谢@Jiahao提供解决方案。
我做了一个小小的项目,以便你检查出来 - > http://goo.gl/35s5Dc
答案 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对象上的方法)。