2011-07-25 167 views
1

hello frnds我想要在列表視圖中選擇列表時更改列表的背景顏色(選擇上的白色),並且如果我選擇任何其他位置,則第一個選定的行將達到其之前的狀態,並且當前選定行的背景成爲white.so如何做到這一點在列表項選擇上更改背景顏色android

public void onListItemClick(ListView parent, View v, int position, long id) { 
    super.onListItemClick(parent, v, position, id); 

    //do some stuff here  

    Toast.makeText(getApplicationContext(), "You have selected"+(position+1)+"th item", Toast.LENGTH_SHORT).show(); 
} 

回答

2

我不會那樣做的代碼,因爲你以後可能要改變顏色,你不應該有「佈局/造型」硬編碼代碼。

請改爲創建一個樣式,並將其應用於xml中的ListView。你可以閱讀你是如何做到這一點,在這個線程: ListSelector applies to the entire list

+0

應該是一個評論,因爲這不是一個答案 – Nezam

1

你的列表視圖中點擊收聽:

yourlistView.setOnItemClickListener(new OnItemClickListener() {        
    @Override public void onItemClick(AdapterView<?> arg0, View arg1, 
             int position, long arg3) { 
     yourAdapter.toggleSelected(position); 
     yourAdapter.notifyDataSetChanged();    
    }  
}); 

然後,讓你的適配器的ArrayList並初始化它來存儲您的列表視圖的所有位置項目:

public ArrayList<Integer> selectedIds = new ArrayList<Integer>(); 
int length = yourmainarraylist.size(); 
for(int i = 0; i < length; i++){ 
    selectedIds.add(0);    
} 

再放入getView檢查切換背景:

if (selectedIds.get(position)==1) 
    convertView.setBackgroundResource(R.drawable.list_row_selected); 
else 
    convertView.setBackgroundResource(R.drawable.list_row); 

,並把這種方法在適配器

public void toggleSelected(int position) { 
    selectedIds.set(position, (selectedIds.get(position) == 0)); 
} 
相關問題