android - 列出具有交替颜色的项目

标签 android listview adapter

我有一个 ListView 和一个为列表项设置交替背景颜色的适配器(“斑马”列表样式):

public View getView(final int position, View convertView, ViewGroup parent) {
    int colorPos = position % colors.length;
    ...
    convertView.setBackgroundColor(colors[colorPos]);
    return convertView;
}

但是现在,当我使用滚轮选择一个项目时,或者当我单击一个项目时,用于选择/单击的原始颜色不会覆盖我的自定义背景(我可以在我设置的颜色下方看到原始颜色)。

如何为这些状态设置原始颜色?

最佳答案

我认为最简单的方法是创建两个用作背景资源的选择器,在 state_selected 模式下使用透明颜色: (res/drawable/alterselector1.xml:)

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true"
        android:drawable="@drawable/transparent" />
    <item android:state_pressed="true"
        android:drawable="@drawable/transparent" />
    <item android:state_selected="false"
        android:drawable="@drawable/altercolor1"/>

</selector>

(res/drawable/alterselector2.xml:)

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true"
        android:drawable="@drawable/transparent" />
    <item android:state_pressed="true"
        android:drawable="@drawable/transparent" />
    <item android:state_selected="false"
        android:drawable="@drawable/altercolor2"/>
</selector>

(res/values/colors.xml:)

<resources>
    <drawable name="transparent">#00ffffff</drawable>
    <drawable name="altercolor1">#ffffffff</drawable>
    <drawable name="altercolor2">#ff000000</drawable>
</resources>

然后使用 setBackgroundResource 方法在适配器的 getView 方法中设置背景:

if (position % 2 == 0){
    reusableView.setBackgroundResource(R.drawable.alterselector1);
} else {
    reusableView.setBackgroundResource(R.drawable.alterselector2);
}

现在当您选择一行时,您的背景不会隐藏原来的选择器。

关于android - 列出具有交替颜色的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2050533/

相关文章:

Android drawable-hdpi-night 文件夹

java - 尝试安装 Eclipse w/ADT 插件

javascript - HTTP 错误 307 - Node.js (Express)、passport.js、mongoose.js 和 Android 应用程序中的临时重定向

ios - Xamarin 窗体 : How to change background from gray on selected item in listview, iOS

android - 在android中使用按钮删除 ListView 项目

android - Listview 设置适配器 fragment 空指针异常

android - 在带有 fragment 的 Activity 中为 ListView 设置适配器时出现 Nullpointerexception

java - Android - 更改了 java 版本,现在改回应用程序无法运行

android - 确保在 android listview 上可见?

java - 在 ListView 项内绘制