Удалить значение из проблемы с базой данных Firebase (Android) - PullRequest
0 голосов
/ 29 марта 2019

все! Я хочу удалить значение из База данных Firebase , используя RecyclerView . Однако я не могу найти ключ ребенка, который я хочу удалить.

Во-первых, я добавляю данные в базу данных следующим образом:

  String key = MainActivity.databaseReference.push().getKey();
  MainActivity.databaseReference.child(key).setValue(myAppModel);

Что касается удаления, в моем адаптере RecyclerView я написал onClickListener в ImageView и удаляю элемент из списка успешно! Кроме того, я пробовал много способов, как удалить этот элемент из базы данных, но данные все еще не тронуты. Вот код:

holder.appDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mAppModelList.remove(position);
                notifyItemRemoved(position);
                notifyItemRangeChanged(position, mAppModelList.size());
               final ValueEventListener eventListener = new ValueEventListener() {
                   @Override
                   public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                       dataSnapshot.getValue(AppModel.class);
                       MainActivity.databaseReference.child(mAuth.getUid()).child(dataSnapshot.getRef().getKey()).removeValue();
                       System.out.println(dataSnapshot.getRef().getKey()); // it gives me user id...but in my MainActivity it gives the real key
                   }

                   @Override
                   public void onCancelled(@NonNull DatabaseError databaseError) {

                   }
               };
               MainActivity.databaseReference.addListenerForSingleValueEvent(eventListener);
            }
        });

Как я уже упоминал в комментарии к коду, getRef (). GetKey () дает мне идентификатор пользователя Firebase, например mAuth.getUid () И в MainActivity я получаю настоящее имя (ключ) ребенка

 Query query = databaseReference;
            query.addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                    AppModel appModel = dataSnapshot.getValue(AppModel.class);
                    appModelResult.add(0, appModel);
                    AddAppDialog.setAppModelResult(appModelResult);
                    System.out.println(dataSnapshot.getRef().getKey());
                    reloadFragment(fragment);
                }

Что я должен сделать, чтобы удалить данные из базы данных? Спасибо всем заранее!

1 Ответ

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

Решено! Первоначально, когда я хочу удалить элемент, я написал

MainActivity.databaseReference.child(mAuth.getUid()).child(appModel.getAppId()).removeValue();

Однако, как я заметил, вы не должны писать идентификатор пользователя

MainActivity.databaseReference.child(appModel.getAppId()).removeValue();

И вот мы здесь! Надеюсь, это может помочь всем

...