Как обновить столбец базы данных, используя флажок в виде списка - PullRequest
0 голосов
/ 04 февраля 2019

Я добавил флажок в свой пользовательский список.Этот список представляет собой список задач, который при нажатии позволяет пользователю редактировать задачу в другом действии, это уже было реализовано.

Если этот флажок установлен, я хочу, чтобы этот флажок изменил состояние задачи на"Complete".Я могу сделать это, передав данные в действие и изменив их там, но я не знаю, как это сделать с этой точки зрения.

Я пытался реализовать это, но это не работает, и я не получаюошибки.Это также лишило возможности выбора элемента списка (задачи) для редактирования или удаления.

Если я не структурировал или не задал вопрос правильно, пожалуйста, дайте мне знать.

Метод флажка

    this.tasks.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            final DatabaseReference checkBoxStatus = FirebaseDatabase.getInstance().getReference("Task List/" + tasks.get(position)).child("Status");

            CheckBox completeCheckBox = view.findViewById(R.id.checkBox);
            completeCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                    if (isChecked) {
                        ValueEventListener checkedBox = new ValueEventListener() {
                            @Override
                            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                                dataSnapshot.getChildren(); {

                                    checkBoxStatus.setValue("Complete");

                                }//getChildren
                            }//OnDataChange
                            @Override
                            public void onCancelled(@NonNull DatabaseError databaseError) {
                            }//OnCancelled
                        };
                        checkBoxStatus.addListenerForSingleValueEvent(checkedBox);
                    }//if
                }//OnCheckedChanged
            });
        }//OnItemClick
    });

Просмотр и нажатие на задачи в списке метода

this.tasks.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
            final DatabaseReference listClick = FirebaseDatabase.getInstance().getReference("Task List/" + tasks.get(position));
            final Intent intent = new Intent(task_list.this, edit_task.class);

            ValueEventListener selectItem = new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    dataSnapshot.getChildren();
                    {
                        String key = tasks.get(position);
                        String taskName = dataSnapshot.child("Name").getValue(String.class);
                        String date = dataSnapshot.child("Date").getValue(String.class);
                        String assignee = dataSnapshot.child("Assigned to").getValue(String.class);
                        String type = dataSnapshot.child("Type").getValue(String.class);
                        String status = dataSnapshot.child("Status").getValue(String.class);
                        String descrip = dataSnapshot.child("Description").getValue(String.class);

                        intent.putExtra("passTaskName", taskName);
                        intent.putExtra("passDate", date);
                        intent.putExtra("passAssigned", assignee);
                        intent.putExtra("passType", type);
                        intent.putExtra("passStatus", status);
                        intent.putExtra("passDescription", descrip);

                        intent.putExtra("passKey", key);

                        startActivity(intent);
                    }//getChildren

                    task_list.this.tasks.setAdapter(arrayAdapter);
                }//OnDataChange
                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }//OnCancelled

            };

            listClick.addListenerForSingleValueEvent(selectItem);


        }//OnItemClick
    });
...