我正在使用 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()));
}
最佳答案
我认为你需要在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
}
}
关于android - itemView.getTag() 返回 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65315729/