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

时间:2013-07-15 16:37:20

标签: android listview selection

我有一个ListView和posibility来选择一个元素(单选)。

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

adapter = new ArrayAdapter(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;
    }
}

由于

4 个答案:

答案 0 :(得分:0)

你可以做到

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

设置列表视图背景。

答案 1 :(得分:0)

我没有太多的代码,因为我现在不在我的工作站,但我想你可以通过onItemClick将所选项目的背景设置为黑色,就像你已经建议的那样。凉。

要在选择特定视图时更改其他(未选定)视图的颜色,我猜你可以调用你的Adapter的getCount()并遍历该列表,调用你的ListView的getChildAt(i) 。这将返回一个可以调用setBackgroundColor(Color)的视图。希望这有帮助

答案 2 :(得分:0)

我会使用Drawable选择器。

检查此链接是否有一个很好的例子: http://www.charlesharley.com/2012/programming/custom-drawable-states-in-android/

基本上你创建了XML drawable,它包含一个映射(系统自动使用)到你想要在某些点击事件发生时显示的内容。

您可以将背景drawable分配给任何视图,因此您可以在XML中为适配器或Java代码执行此操作。在你的情况下可能是这样的:

convertView.setBackgroundDrawable(R.drawable.MySelector);

答案 3 :(得分:0)

parent.setBackgroundColor(while_color); v.setBackgroundColor(black_color)