在我的
Android应用程序中,我有一个包含5个元素的ListView.我创建了一个自定义适配器,以便更改listView的某些元素的背景.例如,列表视图的第二项还没有准备好,所以我想setBackground(Color.Gray),所以他看起来没有做到.为了做到这一点,我在自定义适配器中覆盖了ArrayAdapter中的getView()方法,如下所示:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
if(!itensAvailable[position]) v.setBackgroundColor(Color.Gray);
return v;
}
奇怪的是,无论我使用布尔值itensAvailable [position]还是!itensAvailable [position],列表的第一个元素总是让它的背景改变了!除了第一个元素之外,列表中的所有其他元素都表现得像预期的那样.如果我这样做,那就更奇怪了
if(position == 2)v.setBackgroundColor(Color.Gray);
它改变了位置2中项目的背景,也改变了第一项!如果我做
if(position == 2) {
v.setBackgroundColor(Color.Gray);
System.out.println(v.getText());
}
更奇怪!仅打印位置2的文本,而不打印第一个项目中的文本.
到底是怎么回事? Android漏洞?顺便说一下,我在XOOM 3.2 Honeycomb设备上测试它.
显然,如果我对代码进行评论,那么第一项并没有改变它的背景.
最佳答案 这很奇怪!
如果你写下会发生什么:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
if(!itensAvailable[position]) v.setBackgroundColor(Color.Gray);
else v.setBackgroundColor(Color.Transparent);
return v;
}