2013-07-15 23 views
0

我有一个ListView和posibility来选择一个元素(单选)。如何在OnItemClick事件上为ListView的所有元素设置背景颜色?

如何设置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; 
    } 
} 

感谢

回答

0

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

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

0

你可以做

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

设置你的列表视图背景。

+0

我已经试过,但结果是一样的。我想也许有一些方法可以在选择后更新'ListView'的状态视图,如'notifyDataSetChanged()'。 – vetalitet

+0

是的,在这之后加入'this.notifyDataSetChanged()'应该会有所帮助。 – Neoh

0

我会使用可绘制的选择器。

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

基本上你创建一个包含一个映射(该系统会自动使用),以当某些点击事件发生时,你想显示什么XML绘制。

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

convertView.setBackgroundDrawable(R.drawable.MySelector); 
0

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

相关问题