2016-09-22 238 views
0

我在嘗試刪除以下列表中的項目。但是當我試圖抓住鑰匙時,它顯示了NsShnb2enJcYEkfeE2fiSzbDc6O2的用戶ID鑰匙。但我想抓住每個職位的關鍵。例如,如果用戶點擊列表中的第一個項目,它應該抓住密鑰KSGhFSZg....從Firebase數據庫中刪除項目

類似的問題有很多答案,但數據庫的結構在這裏完全不同。

enter image description here

下面是代碼,我使用。

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

提前感謝!

回答

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

       } 
    }); 
+0

什麼是lstOfertas.add(bid);在做什麼? – Isuru

+0

對不起復制的代碼。我會編輯它。你有沒有嘗試過? –

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

         } 
        }); 
相關問題