我正在使用Firebase数据库,并且我正在从中检索数据。当我的数据库有数据时,addChildEventListener运行良好,但是当我的数据库没有数据时,addChildEventListener无效。贝娄,这是我的代码:
mDatabase = FirebaseDatabase.getInstance().getReference().child("music");
public void getListMusicFromFirebase() {
mDatabase.addChildEventListener(this);
}
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
updateMusic(dataSnapshot);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
updateMusic(dataSnapshot);
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
updateMusic(dataSnapshot);
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
private void updateMusic(DataSnapshot dataSnapshot) {
mListMusic.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
String title = snapshot.getValue(Music.class).getTitle();
String artist = snapshot.getValue(Music.class).getArtist();
String year = snapshot.getValue(Music.class).getYear();
String duration = snapshot.getValue(Music.class).getDuration();
String uri = snapshot.getValue(Music.class).getUri();
Music music = new Music(title, artist, year, duration, uri);
mListMusic.add(music);
}
if (mListMusic.size() > 0) {
bindingListMusic();
return;
}
mBinding.tvDataEmpty.setText("No data");
mDialog.dismiss();
}
我查看我的清单。如果它的大小大于0,我会将它绑定到recyclerview并且相反,我会通知它没有数据,它在有数据时运行良好但是当我从Firebase数据库中删除所有数据时,我的代码可以'执行updateMusic()方法。
请帮忙。
答案 0 :(得分:1)
要启动侦听器,您应该在firebase数据库中拥有所需的数据。 AddChildEvent侦听器需要一个预定义的父级,您可以在应用程序启动时(或随时)附加它。如果没有父母,则永远不会附加或启动听众。
当您稍后添加父级并向其添加子级时,这将导致无响应。因此,请始终确保已添加childEventListener的父项已存在且值不为null。
希望这会有所帮助。