Android 如何在OnItemClick事件上为ListView的所有元素设置背景色?

Android 如何在OnItemClick事件上为ListView的所有元素设置背景色?,android,listview,selection,Android,Listview,Selection,我有一个列表视图,可以选择一个元素(单选) 当选择某个项目时,如何为ListView的所有元素(可能至少可见)设置背景色 adapter = new ArrayAdapter<Orderline>(activity, simple_list_item_single_choice, orderlines) { @Override public View getView(final int position, View convertView, final ViewGro

我有一个列表视图,可以选择一个元素(单选)

当选择某个项目时,如何为ListView的所有元素(可能至少可见)设置背景色

adapter = new ArrayAdapter<Orderline>(activity, simple_list_item_single_choice, orderlines) {
    @Override
    public View getView(final int position, View convertView, final ViewGroup parent) {
        ...
        convertView.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                convertView.setBackgroundColor(BLACK);
                // so here currently selected element is set to BLACK, but also other elements have to be set to WHITE
            }
        });
        return convertView;
    }
}
adapter=new ArrayAdapter(活动、简单列表、项目、单个选项、订单行){
@凌驾
公共视图getView(最终整型位置、视图转换视图、最终视图组父视图){
...
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
convertView.setBackgroundColor(黑色);
//因此,这里当前选定的元素设置为黑色,但其他元素也必须设置为白色
}
});
返回视图;
}
}
您可以这样做

parent.setBackgroundColor(BLACK);
this.notifyDataSetChanged();

设置列表视图背景。

我没有太多代码供您使用,因为我现在不在工作站上,但我想您可以按照您的建议,通过onItemClick将所选项目的背景设置为黑色。酷


要在选中特定视图时更改其他(未选中)视图的颜色,我猜您可以调用适配器的getCount()并循环该列表,调用ListView的getChildAt(I)。这将返回一个视图,您可以在该视图上调用setBackgroundColor(颜色)。希望这对我有帮助,我会使用一个可拖动的选择器

查看此链接可获得一个非常好的示例:

基本上,您可以创建XML drawable,它包含一个映射(系统自动使用该映射)到您希望在某些单击事件发生时显示的内容

您可以将后台drawable分配给任何视图,这样您就可以在适配器的XML或Java代码中完成。在你的情况下可能是这样的:

convertView.setBackgroundDrawable(R.drawable.MySelector);
父.setBackgroundColor(while_color);
v、 setBackgroundColor(黑色)

我已经试过了,但结果是一样的。我想可能有一些方法可以在选择后更新
ListView
的状态视图,比如
notifyDataSetChanged()
。是的,在选择之后添加
这个。notifyDataSetChanged()