Я создаю адаптер списка с держателем вида:
final ViewHolder holder;
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.activity_list_layout, null);
holder = new ViewHolder();
//Layout Code here
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
настройка прослушивателя Onclick:
holder.view.setOnClickListener(titleListener);
final OnClickListener titleListener = new OnClickListener() {
@Override
public void onClick(View v) {
holder.view.setBackgroundResource(R.drawable.top_bar);
notifyDataSetChanged();
}
};
Внутри списка Onclick я меняю фоновое изображение выбранного представления. Но здесь, с выбранным элементом, для других элементов в том же списке меняется фоновое изображение. Пожалуйста, предложите мне, какие изменения мне нужно сделать, чтобы изменить BG только для выбранного элемента.
Обновленный код для getview:
final ViewHolder holder;
if (convertView == null) {
convertView = layoutInflater.inflate(
R.layout.activity_news_list_layout, null);
holder = new ViewHolder();
holder.title = (TextView) convertView.findViewById(R.id.title);
holder.image = (ImageView) convertView
.findViewById(R.id.thumbImage);
holder.view = (RelativeLayout) convertView.findViewById(R.id.tView);
holder.opacityView = (View) convertView
.findViewById(R.id.opacity_view);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.view.setOnClickListener(titleListener);
final OnClickListener titleListener = new OnClickListener() {
@Override
public void onClick(View v) {
holder.view.setBackgroundResource(R.drawable.top_bar);
notifyDataSetChanged();
}
};
holder.view.setOnClickListener(titleListener);
return convertView;
Пожалуйста, проверьте изображение, я выбрал строку «Это сообщество Дубая», но фон также изменился для «Я был уверен». Есть и другие строки, которые были выбраны в событии щелчка.
v.setBackgroundResource(R.drawable.top_bar);
, даже если вам нужно больше кода для управления представлениями. - person RobinHood   schedule 11.03.2014onClickListener
внутри своего адаптера? Если адаптер применяется кListView
, разве вы не должны обрабатывать событие вsetOnItemClickListener
ListView
? - person CodeMonkey   schedule 11.03.2014