listview的row的背景色设置

本文介绍了一种实现ListView中项背景色交替的方法。通过创建自定义的Drawable资源文件并结合特定条件来设置背景,解决了背景颜色无法正常切换的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为是初学者,所以有很多不清楚的地方。因为需求要listView每一行显示的背景色不同,进行颜色的交替。

在网上找了很多,大多是点击后变色或者字体变色表示已读等,还有一种是自己写2中listview的item布局,设置不通背景色。最后找到了一个setBackgroundColor的方法,通过int i=R.color.red,然后把i放进去,给listview中的item设置背景色。尝试后,确实可以设置,但是在选择颜色的时候,对i的颜色id进行更改后,发现颜色突然不会变化了,也不会显示原来设置的,而是一种丑陋的灰褐色。弄了很久也没弄懂,新手也不知道该如何去调试。

最后在网上找到了一篇博客,这是里面的话:

直接在getView()里写view.setBackgroundColor()是不行的。正确的方法是先在drawable目录里建一个xml文件,自己起名如my_row.xml,内容如下(关键是第一个和第四个<item>):

<?xml version="1.0" encoding="utf-8"?>
<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/solid_red" />
</selector> 

	然后在getView()里这样写就可以了:
if (item.getStopId().equals(User.stopId)) {

    view.setBackgroundResource(R.drawable.my_row);
} else {
    view.setBackgroundResource(android.R.drawable.list_selector_background);
}
该篇文章地址:http://www.cnblogs.com/bjzhanghao/archive/2011/06/28/2092514.html
最后我粘贴复制,然后把item.getStopId().equals(User.stopId)这个条件改成自己需要的position%2 == 0,然后就发现可以了,这样这里是最后一个item设置颜色,还有else中代码的意思我也不懂。
最后说一句,当position%2 == 0设置为不等于的时候,滑动listview会出现背景色错乱,但是等于不会,现在也不清楚,而且position打印出来,发现原来position也是有点乱的,第一次是读取一定数量后,你滑动又回到了0。目前水平有限,只能以后去慢慢摸索了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值