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

标签 android android-listview android-3.0-honeycomb android-view

在我的 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/

相关文章:

java - android,我如何以编程方式关闭二级滑动菜单

java - 在 Activity 中显示/隐藏 ListView

android - 如何使用 Holo.Light 主题,并在 pre-honeycomb 设备上回退到 'Light'?

java - Android - 位图缓存占用大量内存

java - 从设备获取当前时间毫秒并将其转换为具有不同时区的新日期

android - 如何模拟 ListView 中第一项(或任何位置)的选择?

java - ListView 显示所有项目减去最后一个

android - 找不到蜂窝开关开/关控制

android - Honeycomb/ICS 中的自定义首选项被破坏

android - 带文本 x 轴的条形图 - achartengine