2013-07-15 21 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)

相關問題