我正在尝试删除以下列表中的项目。但是当我尝试抓取密钥时,它会显示用户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) {
}
});
}
});
}
};
类似的问题有很多答案,但数据库的结构在这里完全不同。
这是我用过的代码。
key
提前致谢!
答案 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) {
}
});