因为是初学者,所以有很多不清楚的地方。因为需求要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。目前水平有限,只能以后去慢慢摸索了。