2012-12-20 80 views
0

我想單擊時更改列表項目的背景,但它不起作用。點擊時我無法更改列表項目的背景

這是我MusicAdapter內部類:

class MusicAdapter extends ArrayAdapter<String>{ 
     Fill fill=null; 
     public MusicAdapter(){ 
      super(GetMusics.this,android.R.layout.simple_list_item_1,song_list); 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      // TODO Auto-generated method stub 

      row = convertView; 
      if(row==null){ 
       LayoutInflater inflater = getLayoutInflater(); 
       row = inflater.inflate(R.layout.row, null); 
       fill=new Fill(row); 
       row.setTag(fill); 
      }else{ 
       fill=(Fill)row.getTag(); 
      } 
      row.setBackgroundResource(R.drawable.list_selector); 
      fill.setRow(song_list.get(position)); 
      return row; 
     } 
    } 

我也試過,但同樣沒有奏效:

private AdapterView.OnItemClickListener onItemClick = new AdapterView.OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View v, int arg2, 
      long arg3) { 
     // TODO Auto-generated method stub 
     lv.getChildAt(arg2).setBackgroundResource(R.drawable.list_selector); 
    } 
}; 

這裏是我的list_selector.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:state_focused="true" 
     android:drawable="@color/Peru"/> 
    <item android:state_pressed="true" 
     android:drawable="@color/Tan"/> 
    <item 
     android:drawable="@color/Peru"/> 
</selector> 

你有什麼建議嗎?

+0

做用戶點擊一次後永久保存嗎?你的'list_selector.xml'做前者。如果你想做後者,你必須用普通的drawable而不是選擇器來調用'setBackgroundResource()'。 – CloudyMusic

回答

0

onItemClick()通過視圖你需要改變已經的背景。在那裏設置背景。

@Override 
public void onItemClick(AdapterView<?> arg0, View v, int arg2, 
     long arg3) { 
    v.setBackgroundResource(R.drawable.list_selector); 
} 
+0

我試過,但再次不起作用 –

+0

我設法做到了這一點,謝謝 –

+0

你能接受,如果它是正確的嗎?謝謝! –

0

必須使用一種叫做Selector並將其設置爲ListSelector,請參考這個問題,你希望背景,而該項目正在積極壓上唯一的改變,或改變Android ListView Selector Color

相關問題