我想从列表视图中更改背景颜色。 数字的背景应按状态
更改1 = red
2 = grey
3 = green
4 = yellow
这是我的自定义适配器中的代码(不起作用):
TextView number = (TextView) rowView.findViewById(R.id.tv_number);
switch(Integer.parseInt(status[position])){
case 1: number.setBackgroundColor(0xff0000);
break;
case 2: number.setBackgroundColor(0xdfdfdf);
break;
case 3: number.setBackgroundColor(0x00ff00);
break;
case 4: number.setBackgroundColor(0xffff00);
break;
default :
break;
}
为什么它不起作用?
答案 0 :(得分:2)
当您为小部件设置背景时,您还需要将Alpha通道添加到您希望使用的颜色,因为Android要求颜色采用 #ARGB 格式,例如#AARRGGBB
,其中 A 是Alpha通道, RGB 是红绿蓝。
因此,在您的情况下,如果您想要透明( 00 前缀)Alpha通道,那么您需要为案例1 执行此操作:
number.setBackgroundColor(0x00ff0000);
或者,对于不透明通道( ff 前缀),请执行以下操作:
number.setBackgroundColor(0xffff0000);
答案 1 :(得分:1)
int cc[] = {R.color.red,r.color.blue}
将getview方法中textview的背景设置为
number.setBackgroundColor(cc[position]);
答案 2 :(得分:1)
试试这个;用这个替换你的代码。
TextView number = (TextView) rowView.findViewById(R.id.tv_number);
switch(Integer.parseInt(status[position])){
case 1: number.setBackgroundColor(Color.RED);
break;
case 2: number.setBackgroundColor(Color.GRAY);
break;
case 3: number.setBackgroundColor(Color.GREEN);
break;
case 4: number.setBackgroundColor(Color.YELLOW);
break;
default :
break;
}
答案 3 :(得分:1)
您的状态[位置]值是否正确? 您可以编写Log statemet来检查值或调试代码。
如果您的值正确无误,请尝试以下代码段。
TextView number = (TextView) rowView.findViewById(R.id.tv_number);
switch(Integer.parseInt(status[position])){
case 1: number.setBackgroundColor(Color.parseColor("#FF0000"));
break;
case 2: number.setBackgroundColor(Color.parseColor("#4D4D4D"));
break;
case 3: number.setBackgroundColor(Color.parseColor("#00FF00"));
break;
case 4: number.setBackgroundColor(Color.parseColor("#FFFF00"));
break;
default :
break;
}
希望得到这个帮助。
答案 4 :(得分:0)
你的状态函数返回什么,rowView是什么?没有多说就很难说。
其他一些建议:
您应该避免像这样的硬编码值,最好在re / values /文件夹中使用colors.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="primary_white">#ffffff</color>
</resources>
然后以与字符串相同的方式引用您的资源,但是R.color.primary_white
这样的魔术数字也是不好的做法。尝试在文件顶部设置一些静态值:
static int STATUS_RED = 1;
...
case STATUS_RED:
这是一个关于在列表视图中更改背景和样式行的教程:
http://webdeveloperpadawan.blogspot.co.uk/2014/09/android-listview-with-differing-rows.html
答案 5 :(得分:0)
试试这个 -
TextView number = (TextView) rowView.findViewById(R.id.tv_number);
switch(position+1){
case 1: number.setBackgroundColor(Color.RED);
break;
case 2: number.setBackgroundColor(Color.GRAY);
break;
case 3: number.setBackgroundColor(Color.GREEN);
break;
case 4: number.setBackgroundColor(Color.YELLOW);
break;
default :
break;
}
答案 6 :(得分:0)
在getView方法中使用此代码..
@Override
public View getView(int position, View convertView, ViewGroup parent) {
switch (position % 4) {
case 0:
convertView.setBackgroundColor(Color.RED);
break;
case 1:
convertView.setBackgroundColor(Color.GREY);
break;
case 2:
convertView.setBackgroundColor(Color.GREEN);
break;
case 3:
convertView.setBackgroundColor(Color.YELLOW);
break;
default:
break;
}
}
希望它能帮助......