我有一个 RecyclerView
使用 Firestore Adapters
. 我的手机上有个按钮 itemView
. 我试图使它这样,当按钮被按下时,它将改变布尔字段 done
从虚假到真实。我正在努力理解如何把这两者联系起来。
目前,我能读懂的时候里面的哪个位置 RecyclerView
并在我的电脑上显示 Log
. 但差不多就是这样。这是我的密码:
接口:
public interface OnListAdminClick {
void onItemClick(int position);
}
我的适配器:
public class DonorAdapter extends FirestoreRecyclerAdapter<DonorModel, DonorAdapter.DonorViewHolder> {
private OnListAdminClick onListAdminClick;
public DonorAdapter(@NonNull FirestoreRecyclerOptions<DonorModel> options, OnListAdminClick onListAdminClick) {
super(options);
this.onListAdminClick = onListAdminClick;
}
@Override
protected void onBindViewHolder(@NonNull DonorAdapter.DonorViewHolder holder, int position, @NonNull DonorModel model) {
holder.rank.setText(String.valueOf(position + 1));
holder.donorName.setText(model.getDonorName());
holder.donorEmail.setText(model.getDonorEmail());
holder.hospitalName.setText(model.getHospitalName());
holder.bookingTime.setText(model.getTime());
holder.status.setText(model.isDone() + "");
}
@NonNull
@Override
public DonorAdapter.DonorViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_adminview_single, parent, false);
return new DonorViewHolder(view);
}
public class DonorViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView rank;
TextView donorName;
TextView donorEmail;
TextView hospitalName;
TextView bookingTime;
TextView status;
Button done_btn;
public DonorViewHolder(@NonNull View itemView) {
super(itemView);
rank = itemView.findViewById(R.id.adminview_position);
donorName = itemView.findViewById(R.id.list_username);
donorEmail = itemView.findViewById(R.id.list_email);
hospitalName = itemView.findViewById(R.id.list_hospital_name);
bookingTime = itemView.findViewById(R.id.list_booking_time);
status = itemView.findViewById(R.id.status_booking);
done_btn = itemView.findViewById(R.id.done_btn);
done_btn.setOnClickListener(this);
}
@Override
public void onClick(View view) {
onListAdminClick.onItemClick(getAdapterPosition());
}
}
}
在我的main上定义onnitemclick:
adapter = new DonorAdapter(options, new OnListAdminClick() {
@Override
public void onItemClick(int position) {
Log.d("ITEM_CLICK", "Clicked the item: " + position);
}
});
最后,我的firestore:
1条答案
按热度按时间vc6uscn91#
我在适配器类中看到,您将position传递给onitemclick()方法,这不是很有帮助,因为它只表示recyclerview中单击项的位置。但是,传递“donoruid”将帮助您解决问题。这可以很容易地完成,绕过“donoruid”值到donorviewholder的构造函数。现在,接口的声明应该如下所示:
在活动中,可以使用以下代码行将“done”属性更新为true: