从Firebase数据库中删除项目

时间:2016-09-22 15:05:08

标签: android firebase firebase-realtime-database firebaseui

我正在尝试删除以下列表中的项目。但是当我尝试抓取密钥时,它会显示用户ID密钥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) { } }); } }); } };

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

enter image description here

这是我用过的代码。

key

enter image description here

提前致谢!

2 个答案:

答案 0 :(得分:1)

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

      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) {

                }
     });

答案 1 :(得分:0)

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

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) {

                        }
                    });