Android:第一个元素列表视图表现得很奇怪

在我的
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;
    }
点赞