Я использую 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 Спасибо большое!!!
Я думаю, вам нужно установить тег для каждого предмета вторсырья в 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
@SalmanMalik мы все тот человек время от времени .. счастливого пути в кодировании :)
привет, интересно, код вызывает
setTag?