从Firebase数据库问题中删除价值(Android)

时间:2019-03-29 18:01:07

标签: android firebase-realtime-database android-recyclerview recycler-adapter

大家!我想使用 RecyclerView Firebase数据库中删除该值。 但是,我找不到要删除的孩子的

首先,我将数据添加到数据库中,如下所示:

  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用户ID,例如 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 :(得分:0)

解决了! 最初,当我要删除项目时,我写了

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

但是,正如我注意到的那样,您不应输入用户ID

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

我们来了! 希望对大家有帮助