Android - 更改多选列表视图背景的颜色

时间:2014-08-03 20:45:08

标签: java android listview colors onitemclicklistener

我有一个多选ListView,它默认为具有白色背景,但在选中时,项目的背景变为蓝色(此处由十六进制代码定义)。

mItemState = new boolean[list.length];
ArrayAdapter<String> adapter = new ArrayAdapter<String>(ListOfMajors.this,android.R.layout.simple_list_item_multiple_choice,list);
mylist.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
mylist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        mItemState[position] = !mItemState[position];
        if (mItemState[position]){
            view.setBackgroundColor(Color.parseColor("#33b5e5"));                                       
        }else{
            view.setBackgroundColor(Color.WHITE);                       
        }

    }

});

现在,一切似乎都运转正常。但是,如果我选择第一个元素,那么最后一个元素也会改变背景颜色(但是它不会被勾选)。此外,如果我选择最后一个元素,那么第一个元素也会发生同样的事情。这似乎是发生这种情况的原因?

1 个答案:

答案 0 :(得分:0)

您必须熟悉ListView回收机制和convertView模型。最后一个元素视图使用第一个元素视图作为convertView组成。考虑一下这个博客http://android.amberfog.com/?p=296