【发布时间】:2019-05-03 20:42:13
【问题描述】:
我想在 OnClick 发生时更新我的 Firestore 中的一个字段。 问题是我不知道如何检索我的实际项目的 id,因为这是自动生成的。 (我想更新 assignedTo 字段)。 Firestore的结构如下::
我的适配器 RecyclerView 的代码 sn-p 是:
public class AvailableTaskListAdapter extends RecyclerView.Adapter<AvailableTaskListAdapter.ViewHolder> {
public List<Task> taskList;
Activity mActivity;
FirebaseFirestore firestore;
public AvailableTaskListAdapter(List<Task> taskList, Context mContext, FirebaseFirestore firestore) {
this.taskList = taskList;
this.mActivity = (Activity) mContext;
this.firestore = firestore;
}
@NonNull
@Override
public AvailableTaskListAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layout_available_tasks_item, viewGroup, false);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//HERE I want to be happening the update of my field.
}
});
return new AvailableTaskListAdapter.ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull AvailableTaskListAdapter.ViewHolder viewHolder, int i) {
viewHolder.tvEmail.setText(taskList.get(i).getUser());
...
}
@Override
public int getItemCount() {
return taskList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
View mView;
public TextView tvEmail;
...
public ViewHolder(View itemView) {
super(itemView);
mView = itemView;
tvEmail = (TextView) mView.findViewById(R.id.tvEmail);
...
}
}
public void showDialog(final Activity activity) {
final Dialog dialog = new Dialog(activity);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setCancelable(false);
dialog.setContentView(R.layout.dialog_apply_to_task);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
FrameLayout mDialogNo = dialog.findViewById(R.id.frmNo);
mDialogNo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(activity.getApplicationContext(),"Cancel" ,Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
FrameLayout mDialogOk = dialog.findViewById(R.id.frmOk);
mDialogOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(activity.getApplicationContext(),"Okay" ,Toast.LENGTH_SHORT).show();
dialog.cancel();
}
});
dialog.show();
}}
【问题讨论】:
-
在哪个地方尝试获取 id?
-
我评论了我想要得到它的地方。
标签: java android firebase android-recyclerview google-cloud-firestore