2016-09-22 9 views
0

다음 목록에서 항목을 삭제하려고합니다. 그러나 키를 잡으려고 할 때 사용자 ID 키는 NsShnb2enJcYEkfeE2fiSzbDc6O2입니다. 하지만 각 게시물의 핵심을 잡고 싶습니다. 예를 들어 사용자가 목록의 첫 번째 항목을 클릭하면 키를 가져와야합니다. 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

감사합니다!

 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

당신은 부모 키를 얻고있다. 귀하의 경우

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

         } 
        }); 
+0

lstOfertas.add (bid) 란 무엇입니까? 하기? – Isuru

+0

죄송합니다. 복사 된 코드입니다. 나는 그것을 편집 할 것이다. 시도해 봤어? –

0

를 귀하의 요청에 전체 경로를 제공하기 위해 당신이해야 키를 얻기 위해 : 당신이 시도 할 수 있도록

관련 문제