firestore中的布尔值通过复选框切换。需要2次点击才能更改价值?

时间:2019-02-23 02:29:22

标签: android firebase checkbox boolean

我用adapter创建了一个OnItemClickListener,并将其设置为checkbox。我已经成功地将checkbox切换为Boolean Firestore中的Firebase值,但是需要2次单击才能更改该值。

单击checkbox时,直到第二次单击才切换到选中状态。取消选中也是如此。

该方法在onCreate中被调用。

“完成”是我数据库中的布尔值字段。

checkbox位于另一个recyclerview中嵌套的recyclerview上。这就是为什么它具有嵌套的集合/文档和ID变量的原因。我排除了用于创建变量的意图。

private void setUpCheckBox() {

    adapter.setOnItemClickListener(new ToDoAdapter.OnItemClickListener() {

        @Override
        public void onItemClick(DocumentSnapshot documentSnapshot, final int 
        position) {

        final CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox_complete);


            Map<String, Object> done = new HashMap<>();

            if (checkBox.isChecked()) {
                checkBox.setChecked(true);
                done.put("done", true);
            }
            if (!checkBox.isChecked()) {
                checkBox.setChecked(false);
                done.put("done", false);
            }

            db.collection("customer2").document(id1).collection("To Do").document(id2)
                    .set(done, SetOptions.merge())
                    .addOnSuccessListener(new OnSuccessListener<Void>() {
                        @Override
                        public void onSuccess(Void aVoid) {
                            Toast.makeText(CustomerProfile.this, id2, Toast.LENGTH_SHORT).show();

                        }

                    });
        }
    });
}

这是我的适配器类中的嵌套类。

private OnItemClickListener listener;

监听器在父类中声明。

    class ToDoHolder extends RecyclerView.ViewHolder {

        CheckBox checkBoxComplete;

        public ToDoHolder(@NonNull View itemView) {
            super(itemView);

            checkBoxComplete = itemView.findViewById(R.id.checkBox_complete);

            checkBoxComplete.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int position = getAdapterPosition();
                    if (position != RecyclerView.NO_POSITION && listener != null) {
                        listener.onItemClick(getSnapshots().getSnapshot(position), position);
                    }
                }
            });
        }
    }
    public interface OnItemClickListener {
        void onItemClick(DocumentSnapshot documentSnapshot, int position);
    }
    public void setOnItemClickListener(OnItemClickListener listener){
        this.listener = listener;

    }
}

0 个答案:

没有答案