从 Firebase 数据库中删除项目

Delete item from the Firebase database

我正在尝试从以下列表中删除一个项目。但是当我尝试获取密钥时,它显示的用户 ID 密钥是 NsShnb2enJcYEkfeE2fiSzbDc6O2。但是我想抢每个post的key。例如,如果用户点击列表中的第一项,它应该抓取键 KSGhFSZg....

类似问题有很多答案,但这里的数据库结构大不相同。

这是我用过的代码。

mAdapter = new FirebaseRecyclerAdapter<Note, FirebaseNoteViewHolder>(Note.class, R.layout.item_note, FirebaseNoteViewHolder.class, mRef) {
    @Override
    public void populateViewHolder(FirebaseNoteViewHolder noteMessageViewHolder, final Note noteMessage, final int position) {
        noteMessageViewHolder.setTitle(noteMessage.getTitle());
        noteMessageViewHolder.setUpdatedDate(DateFormat.getInstance().format(noteMessage.getDataModified()));

        noteMessageViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Toast.makeText(getActivity(), noteMessage.getDataModified().toString(), Toast.LENGTH_LONG).show();

                databaseReference.orderByChild("dataModified").equalTo(noteMessage.getDataModified().toString()).addListenerForSingleValueEvent(
                        new ValueEventListener() {
                            @Override
                            public void onDataChange(DataSnapshot dataSnapshot) {

                                String key = dataSnapshot.getKey();

                                Toast.makeText(getActivity(), key, Toast.LENGTH_LONG).show();
                            }


                            @Override
                            public void onCancelled(DatabaseError databaseError) {

                            }
                        });
            }
        });
    }
};   

提前致谢!

您正在获取父密钥,因此您可以尝试:

      databaseReference.orderByChild("dataModified").equalTo(noteMessage.getDataModified().toString()).addListenerForSingleValueEvent(
          new ValueEventListener() {
           @Override
          public void onDataChange(DataSnapshot dataSnapshot) {

            String key = dataSnapshot.getKey();
            int positionCount=0;
            for(DataSnapshot note : dataSnapshot.getChildren()){
                if(positionCount==position){
                   firebase.child("notes").child(key).child(note .getKey()).removeValue();
                   Toast.makeText(getActivity(), note.getKey(), Toast.LENGTH_LONG).show();
                   }
               positionCount++;
            }


      }
      @Override
      public void onCancelled(DatabaseError databaseError) {

                }
     });

要获取您的密钥,您应该提供请求的完整路径。在你的情况下

databaseReference.child("notes" + "/" + yourUserId ).orderByChild("dataModified").equalTo(noteMessage.getDataModified().toString()).addListenerForSingleValueEvent(
                    new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {

                            String key = dataSnapshot.getKey();

                            Toast.makeText(getActivity(), key, Toast.LENGTH_LONG).show();
                        }


                        @Override
                        public void onCancelled(DatabaseError databaseError) {

                        }
                    });