2013-04-25 3 views
0

У меня есть пользовательский адаптер для элементов списка. У меня есть два требования:item item row color issue android

1) элементы списка должны иметь альтернативные цвета. Чтобы осуществить это, у меня есть ниже код

private final int[] bgColors = new int[] {R.color.list_bg_1, R.color.list_bg_2};    
int colorPosition = position % bgColors.length; 
convertView.setBackgroundResource(bgColors[colorPosition]); 

2) при нажатии на элемент списка, он должен выделить

Drawable selectedBackground; 
    selectedBackground = context.getResources().getDrawable(R.color.backgroundColor); 
    if (selectedPos == position) { 
       convertView.setBackgroundDrawable(selectedBackground); 
      } else { 
       convertView.setBackgroundDrawable(null); 
      } 

// this method is called in onItemClick in Activity. 
public void setSelectedPosition(int pos){ 
      selectedPos = pos; 
      notifyDataSetChanged(); 
     } 

Проблема: когда я ставлю как код, либо функциональность не работает , Как я могу убедиться, что обе функции работают с вышеуказанным кодом?

+0

См. Этот [SO ответ] (http://stackoverflow.com/questions/2050533/list-items-with-alt ernating-цвет) – codeMagic

ответ

0

Вы должны создать файл selector.xml для фона и затем установить фон представления на это имя селектора. Селектор позволяет выбрать фон для каждого состояния представления; или не выбран вид, прессованные и др

т.е. У вас есть файл XML с именем my_views_background_selector

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_selected="true" 
    android:drawable="@drawable/selectedBackground" /> 
<item android:state_pressed="true" 
    android:drawable="@drawable/pressedBackground" /> 
<item android:drawable="@drawable/regularBackground"/> 


</selector> 

И тогда вы можете установить фон программно делая

convertView.setBackgroundResource(R.drawable.my_views_background_selector) 

Или в файле xml, который использовался для раздувания вашего конвертированного изображения