2013-06-28 213 views
1

我的列表視圖包含2個TextView和一個ImageView。我用一個適配器來填充ListView。當我點擊行項目時,我希望定位在項目的背景圖像點擊更改。我使用setOnItemClickListener()以下在listView中更改ImageView背景onItemSelected Android

lvRMultiple.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 

      mp3Url = trackList.get(position).getPreview().toString(); 
      title = trackList.get(position).getTitle().toString(); 
      playStreamMusic(); 



      Toast.makeText(getBaseContext(), "Item Clicked :)", Toast.LENGTH_LONG).show(); 
     } 
    }); 

顯示和我getView()方法如下:

public View getView(int position, View convertView, ViewGroup parent) { 
     vi = convertView; 

     if (convertView == null) { 

      vi = inflater.inflate(R.layout.ecran_multiple_row, null); 
      holder = new ViewHolder(); 

      holder.txIndex = (TextView) vi.findViewById(R.id.txIndex); 
      holder.txSTitle = (TextView) vi.findViewById(R.id.txSTitle); 
      holder.btOnOFF = (ImageView) vi.findViewById(R.id.btOnOFF); 
      vi.setTag(holder); 


     } else 
      holder = (ViewHolder) vi.getTag(); 


     return vi; 
    } 



} 

我怎樣才能改變項目選擇ImageView的背景是什麼?

回答

3

您需要使用選擇器。它是一個引用多個可繪製或顏色的xml文件,並告訴Android何時應該使用它。

這件事情是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:state_enabled="false"><color android:color="#50b1b1b1" /> 
</item> 
<item android:drawable="@drawable/borderless_background_shape" android:state_enabled="true" android:state_pressed="true"/> 
<item android:drawable="@drawable/borderless_background_shape" android:state_enabled="true" android:state_focused="true"/> 
<item android:state_enabled="true"><color android:color="@android:color/transparent" /> 
</item> 

</selector> 

在此看一看以瞭解更多信息:http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

2

試試這個:

vRMultiple.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 

     mp3Url = trackList.get(position).getPreview().toString(); 
     title = trackList.get(position).getTitle().toString(); 
     playStreamMusic(); 

     //find your ImageView using the view provided by the event 
     ImageView imgview = (ImageView) view.findViewById(R.id.btOnOFF); 
     //And change its background here 
     imgview.setBackgroundDrawable(....); 


     Toast.makeText(getBaseContext(), "Item Clicked :)", Toast.LENGTH_LONG).show(); 
    } 
}); 
+0

它的工作原理,但是當我向下滾動imgview迴歸默認情況下,當點擊第二行時,兩個圖像視圖都會改變它應該是單一選擇 – Dimitri