在我的 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 的文本被打印,而不是第一个项目的文本。
到底是怎么回事?安卓漏洞?顺便说一句,我在 XOOM 3.2 Honeycomb 设备上对其进行了测试。
显然,如果我对此代码进行注释,则第一项不会改变它的背景。