itemView.getTag() returns -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();
}
}

我是安卓系统的新手,所以如果我不能正确解释,请原谅我

这是的问题部分

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

我认为您需要为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
}
}

最新更新