Как отредактировать дочернее значение под ключом, сгенерированным автоматически - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь отредактировать значение "shopB" в моей базе данных.Я делаю это внутри держателя вида, используя диалоговое окно с текстовым полем редактирования и кнопкой подтверждения.Когда пользователь нажимает на конкретную транзакцию, ему предоставляется диалоговое окно, в котором он вводит значение для shopB и затем нажимает «Утвердить».

Я изо всех сил пытаюсь сделать это, так как не могу получить доступ к этому значению из-за уникальностисгенерированный ключ, который имеет firebase.У меня много сообщений с похожими проблемами, но поскольку я делаю это внутри держателя представления, я не вижу, как я могу использовать DataSnapshot.Любая помощь будет принята с благодарностью, поскольку я очень теряюсь.

Структура базы данных: enter image description here

viewHolder.setItemClickListener(new ItemClickListener() {
                        @Override
                        public void onClick(android.view.View view, int position, boolean isLongClick) {
                            Toast.makeText(Request.this, "Receiving: " + shopA, Toast.LENGTH_SHORT).show();
                            ThisDialog = new Dialog(Request.this);
                            ThisDialog.setContentView(R.layout.dialog_template);
                            final EditText Write = (EditText) ThisDialog.findViewById((R.id.write));
                            Button Approve = (Button) ThisDialog.findViewById(R.id.approve);

                            Write.setEnabled(true);
                            Approve.setEnabled(true);

                            Approve.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    String newShopB = Write.getText().toString().replace(".", " ");
                                    transaction.child("key").child("shopB").setValue(newShopB);
                                    Toast.makeText(Request.this, "CustB Approval", Toast.LENGTH_SHORT).show();
                                    ThisDialog.cancel();
                                }
                            });
                            ThisDialog.show();
                        }
                    });

Это был бы мой код, но, очевидно, где я имею"action.child ("ключ") "не находит ключ.

О, и транзакция определена ранее в моем коде как

database = FirebaseDatabase.getInstance();
start = database.getReference("Transaction");
transaction = start.child(passedEmail);

1 Ответ

0 голосов
/ 08 марта 2019

Вот возможное решение для обхода вашего проекта:

start.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
          for (DataSnapshot child : dataSnapshot.child(key).getChildren()) {

                //insert additional codes here
              }
            }
          });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...