问题描述
|
我有一个填充的列表视图,该列表视图具有不同的背景,具体取决于该项目所在的类别,所有这些都在视图适配器的
getView()
方法中设置。我的问题是这样做隐藏了选择器。
我遇到了一个很好的解决方案
<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">
<item android:state_window_focused=\"false\" android:state_selected=\"true\" android:drawable=\"@android:color/transparent\" />
<item android:state_selected=\"true\" android:drawable=\"@android:color/transparent\" />
<item android:state_pressed=\"true\" android:state_selected=\"false\" android:drawable=\"@android:color/transparent\" />
<item android:state_selected=\"false\" android:drawable=\"@color/some_color\" />
</selector>
这行得通,但是这意味着我必须为每个类别编写一个,对我来说似乎是很多冗余的代码。有没有一种方法可以使用此颜色选择器,但可以在代码中动态设置state_selected=\"false\"
?
解决方法
您的ListView带有任何适配器。无论是阵列适配器还是扩展基础适配器。我们将适配器设置为列表视图。我们的视图由该适配器管理。所以去那个适配器。因为你必须给一些条件。我给我的条件是,如果位置为2则为
view.setSelected(false)
。您也可以在此处将该背景颜色设置为禁用该视图。