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); 
        } 
    }); 

Теперь это всего лишь предположение, основанное на коде, который вы уже опубликовали. Если вы обновите вопрос с помощью оставшейся части кода вашего адаптера, я могу обновить свой ответ.

Другие вопросы по тегам