кликабельные иконки в RecyclerView

#java #android #user-interface

#java #Android #пользовательский интерфейс

Вопрос:

У меня возникли некоторые проблемы с пониманием шаблона здесь. У меня слишком много смешанных представлений и адаптеров. Где моя логика идет не так?

Пытаюсь получить значки, похожие на кликабельные маркеры. Если установлен флажок, установите значение true, а если установлен еще раз, верните значение false. Однако, даже если для него установлено значение true / или false, представление не обновляется автоматически.

 public class MyPojo {

String title;
String desc;
int image;
boolean isChecked;
  

Мой класс адаптера ~

   @Override
    public void onBindViewHolder(ViewHolder holder, final int position) {
    // - get element from your dataset at this position
    // - replace the contents of the view with that element
    TextView title =  (TextView) holder.mView.findViewById(R.id.textView);
    TextView desc =  (TextView) holder.mView.findViewById(R.id.textView2);
    final ImageView image =  (ImageView) holder.mView.findViewById(R.id.imageView);

            title.setText(pojos.get(position).getTitle());
            desc.setText(pojos.get(position).getDesc());
    if (!(pojos.get(position).isChecked())) {
        image.setImageResource(pojos.get(position).getImage());
    } else {
        image.setImageResource(R.mipmap.ic_launcher);
    }

    image.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            image.setImageResource(R.mipmap.ic_launcher);
            //todo Where do I set my is clicked ?
            if (pojos.get(position).isChecked) {
                pojos.get(position).setChecked(false);
                //image.setImageResource(R.mipmap.ic_launcher);

            }else{
                pojos.get(position).setChecked(true);
                //image.setImageResource(pojos.get(position).getImage());


            }

        }
    });

}
  

Комментарии:

1. Вы должны привязать свои представления к таким title и desc в своем классе ViewHolder, а не в onBindViewHolder.

Ответ №1:

вам нужно установить setOnclickListener() в ViewHolder классе вместо onBindViewHolder()