ItemView.getTag() возвращает -1

Я использую RecyclerView и хочу просмотреть данные элемента списка, на который я нажимаю. Я использую itemView.getTag(), чтобы получить значение индекса и привести его к моему CustomAdapter.

Пробовал разными способами, но не помогло. пожалуйста, помогите мне.

Вот мой код:

public class DonorAdapter extends RecyclerView.Adapter<DonorAdapter.ViewHolder> {

    ArrayList<Donor> donorsList;

    ItemSelected activity;
    public interface ItemSelected{
        void onItemClicked(int index);
    }
    public DonorAdapter(Context context, ArrayList<Donor> list){


        activity = (ItemSelected) context;
        donorsList = list;
    }

    public class ViewHolder extends RecyclerView.ViewHolder
    {
        ImageView ivDonorGender;
        TextView tvListName;
        TextView tvBloodGroup;
        public ViewHolder(@NonNull final View itemView) {
            super(itemView);
            ivDonorGender = itemView.findViewById(R.id.ivDonorGender);
            tvListName = itemView.findViewById(R.id.tvListName);
            tvBloodGroup = itemView.findViewById(R.id.tvListBloodGroup);
            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    activity.onItemClicked(donorsList.indexOf((Donor) itemView.getTag()));
                }
            });
        }
    }
@NonNull
    @Override
    public DonorAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.donors_list, parent, false);
        return new ViewHolder(v);
    }

    @Override
    public void onBindViewHolder(@NonNull DonorAdapter.ViewHolder holder, int position) {
        holder.tvListName.setText(donorsList.get(position).getName());
        holder.tvBloodGroup.setText(donorsList.get(position).getSurname());

      }
    }

    @Override
    public int getItemCount() {
        return donorsList.size();
    }
}

Я новичок в Android, так что извините, если я не могу правильно объяснить

Вот проблемная часть

itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
    activity.onItemClicked(donorsList.indexOf((Donor)                
    itemView.getTag()));
}

привет, интересно, код вызывает setTag?

IronMan 16.12.2020 01:42

О Боже! Я чувствую себя таким глупым. Соскучилась setTag Спасибо большое!!!

Salman Malik 16.12.2020 01:45
3
2
189
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, вам нужно установить тег для каждого предмета вторсырья в onBindViewHolder

@Override
public void onBindViewHolder(@NonNull DonorAdapter.ViewHolder holder, int position) {
    holder.tvListName.setText(donorsList.get(position).getName());
    holder.tvBloodGroup.setText(donorsList.get(position).getSurname());
    holder.itemView.setTag(donorsList.get(position)); // change here
  }
}

Да, вот в чем была проблема. Совсем пропустил onBindViewHolder и забыл setTag

Salman Malik 16.12.2020 01:46

@SalmanMalik мы все тот человек время от времени .. счастливого пути в кодировании :)

Zain 16.12.2020 01:52

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