Мои строки содержат кнопку, у которой есть собственный прослушиватель щелчков, установленный в getView моего адаптера. Я могу различать щелчки по кнопкам и фактические щелчки по элементам строки с помощью android: DecndantFocusability = "blocksDescendants" в родительском элементе строки.
Когда я нажимаю кнопку, она правильно устанавливает фон кнопки, моя проблема заключается в том, что когда я прокручиваю список, он также настраивает ее для разных строк. Я предполагаю, что у них где-то проблема с переработкой просмотров.
Вот мой код:
@Override
public View getView(int position, View convertView, ViewGroup parent){
if(convertView == null){
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.todays_sales_favorite_row, null);
holder.favCatBtn = (Button)convertView.findViewById(R.id.favCatBtn);
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
holder.favCatBtn.setTag(position);
holder.favCatBtn.setOnClickListener(this);
return convertView;
}
@Override
public void onClick(View v) {
int pos = (Integer) v.getTag();
Log.d(TAG, "Button row pos click: " + pos);
RelativeLayout rl = (RelativeLayout)v.getParent();
holder.favCatBtn = (Button)rl.getChildAt(0);
holder.favCatBtn.setBackgroundResource(R.drawable.icon_yellow_star_large);
}
Итак, если я нажму кнопку в позиции 1 строки, фон кнопки изменится должным образом. Но затем, когда я прокручиваю список вниз, случайным образом устанавливаются и другие кнопки. Иногда, когда я прокручиваю назад до позиции 1, фон кнопки снова возвращается к исходному.
Что мне здесь не хватает? Я знаю, что я прав, это просто что-то незначительное, чего я не делаю.