gpt4 book ai didi

Android:第一个元素 ListView 表现得很奇怪

转载 作者:太空宇宙 更新时间:2023-11-03 10:29:29 24 4
gpt4 key购买 nike

在我的 Android 应用程序中,我有一个包含 5 个元素的 ListView。我创建了一个自定义适配器,以更改 listView 的某些元素的背景。比如list view的第二个item还没有准备好,所以我想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;
}

奇怪的是,无论我使用 bool 值 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 设备上对其进行了测试。

显然,如果我对这段 if 代码进行注释,第一项的背景不会发生变化。

最佳答案

很奇怪!如果你写会发生什么:

    @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;
}

关于Android:第一个元素 ListView 表现得很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8269945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com