当我点击应用列表中的第一项时,我想删除具有以下代码的Firebase数据库子,但我不能。怎么了?
Query removeCalendar = mCalendarDatabaseReference.limitToFirst(1);
removeCalendar.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String remCal = dataSnapshot.toString();
mCalendarioDatabaseReference.child(remCal).removeValue();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 0 :(得分:1)
Firebase查询返回可能满足查询的可能位置列表,您需要遍历dataSnapshot以访问这些位置。而且,这个:
String remCal = dataSnapshot.toString();
不会打印此快照的String值。如果要获取dataSnapshot的字符串值,则应为:
String remCal = dataSnapshot.getValue(String.class);
如果您想获取数据快照的引用,只需使用getRef(),您就不必访问原始引用。
Query removeCalendar = mCalendarDatabaseReference.limitToFirst(1);
removeCalendar.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot child: dataSnapshot.getChildren()) {
child.getRef().setValue(null); //deleting the value at this location. You can also use removeValue()
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 1 :(得分:0)
我用这段代码解决了这个问题:
Query removerCalendario = mCalendarioDatabaseReference.limitToFirst(1);
removerCalendario.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
ds.getRef().removeValue();
}
}
答案 2 :(得分:0)
您可以执行mCalendarioDatabaseReference.child(remCal).setValue(null);