【问题标题】:Android - Change color of multiple choice listview backgroundAndroid - 更改多项选择列表视图背景的颜色
【发布时间】:2014-08-03 20:45:08
【问题描述】:

I have a multiple choice ListView which defaults as having a white background but when selected, the background of the item changes to blue (defined here by a hex code).

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

    }

});

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

【问题讨论】:

    标签: java android listview colors onitemclicklistener


    【解决方案1】:

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

    【讨论】:

    • 这是否意味着没有办法解决这个问题?
    • 你可以继承 ArrayAdapter 类覆盖 getView(...) 并且不使用 convertView ,但这是一个非常糟糕的主意。
    • 在我的情况下我将如何使用 convertView?
    • 在上面的链接中,我认为有一个getView(....) 方法的示例,您可以删除` if (convertView == null) ..` 条件并删除ViewHolder 类。
    猜你喜欢
    • 2015-01-13
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 2016-07-17
    • 2012-05-16
    • 2012-12-13
    相关资源
    最近更新 更多