Android ListView适配器添加视图

时间:2016-03-27 19:35:49

标签: android listview android-adapter

我试图更改ListView中某些项目的颜色。它崩溃了NullPointerException,我不确定为什么,我认为它是因为适配器没有创建/添加视图到ListView,所以它试图检索一个数组上没有的项目。只要列表中至少有一个项目,我就可以完美地添加彩色项目。我该如何解决这个问题?

        int index = 0;
    for(ItemEntry i: tentry) {
        adapter.add(i.Name); // Adding to Adapter
        adapter.notifyDataSetChanged(); // Telling it I've done so
        long time = TimeUnit.MILLISECONDS.toDays(i.Date.getTime() - System.currentTimeMillis());
        ListView stuff = (ListView) this.findViewById(R.id.contentsList);
        if( time < 0 ) {
            stuff.getChildAt(index).setBackgroundColor(Color.RED); // Null exception
        } else if( time < 1 ) {
            stuff.getChildAt(index).setBackgroundColor(Color.RED); // Null exception
        } else if( time < 2 ) {
            stuff.getChildAt(index).setBackgroundColor(Color.YELLOW); // Null exception
        }
        index++;
    }

2 个答案:

答案 0 :(得分:0)

不要通过索引覆盖孩子,以便像这样进行UI更改。它在乞求麻烦:

stuff.getChildAt(index).setBackgroundColor(Color.RED); // Null exception

相反,根据某些逻辑确定适配器的getView()中的项目视图,以确定哪些项目应具有什么背景颜色。

答案 1 :(得分:0)

您应该将此类逻辑放在适配器的getView方法中。 在那里,您可以根据其值修改项目的backgroundColor。

这个主题有很多主题。 例如,请看一下:How can I change the background color of list items based on the data being displayed in each item?