Android, как обновить видовое изображение в списке при нажатии на элемент
У меня есть ViewHolder в классе arrayadapter, я хочу привязать действие клика к определенному элементу в списке и мне нужно обновить содержимое элемента по клику favicon.
У меня есть привязка действий в методе getView:
class ViewHolder
{
public ImageView favoriteicon;
public TextView title;
public TextView time;
public TextView type;
public TextView hidden_value_id;
public TextView hidden_image_name;
public boolean imageset=false;
public ImageView imgView;
public ViewHolder(View base)
{
this.favoriteicon=(ImageView) base.findViewById(R.id.favoriteicon);
this.title = (TextView) base.findViewById(R.id.title);
this.time = (TextView) base.findViewById(R.id.time);
this.type = (TextView) base.findViewById(R.id.type);
this.imgView = (ImageView) base.findViewById(R.id.icon);
this.hidden_value_id = (TextView) base.findViewById(R.id.hidden_value_id);
this.hidden_image_name = (TextView) base.findViewById(R.id.hidden_image_name);
}
}
@Override
public View getView(final int position,View view, final ViewGroup parent) {
final ViewHolder holder;
View rowView=view;
if(rowView==null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.new_listview_items, parent, false);
holder = new ViewHolder(rowView);
rowView.setTag(holder);
}
else {
holder=(ViewHolder)rowView.getTag();
}
holder.title.setText(title.get(position));
holder.time.setText(time.get(position));
holder.type.setText(type.get(position));
holder.hidden_value_id.setText(id.get(position));
holder.hidden_image_name.setText(hidden_image_name.get(position));
if(holder.imageset==true)
{
holder.favoriteicon.setImageResource(R.drawable.h);
}
holder.favoriteicon.setOnClickListener(new
View.OnClickListener() {
public void onClick(View b) {
holder.favoriteicon.setImageResource(R.drawable.h);
holder.imageset=true;
notifyDataSetChanged();
}
});
return rowView;
}
Как обновить конкретный элемент в списке при щелчке элемента, если у меня есть позиция элемента.
1 ответ
Итак, на данный момент я представляю, что у вас есть оператор if else, который проверяет, является ли элемент в текущей позиции предпочтительным? Теперь происходит то, что вы устанавливаете изображение значков при щелчке, но вы не меняете значение объектов. Поэтому, когда вы прокручиваете вверх и вниз и элемент списка перезагружается, это значение сбрасывается.
Вам нужно что-то подобное
holder.favoriteicon.setOnClickListener(new View.OnClickListener() {
public void onClick(View b) {
object.setFavourited(true);
holder.favoriteicon.setImageResource(R.drawable.h);
}
});
Теперь это всего лишь предположение, основанное на коде, который вы уже опубликовали. Если вы обновите вопрос с помощью оставшейся части кода вашего адаптера, я могу обновить свой ответ.