Firebase onChildAdded在没有数据时不会调用 [英] Firebase onChildAdded not called when there is no data
本文介绍了Firebase onChildAdded在没有数据时不会调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想检查里面是否有孩子。当我有数据的时候,当没有孩子没有被调用时,它会进入 OnChildAdded
else。我想知道是否有任何数据?如何检查这个?
ref.orderByKey()。startAt(todayDate).endAt(tomorrowDate).addChildEventListener(new ChildEventListener (){
@Override
public void onChildAdded(DataSnapshot dataSnapshot,String s){
System.out.println(孩子是否存在?+ dataSnapshot.child(matches) (DataSnapshot postSnapshot:dataSnapshot.getChildren()){
AvailableRidesFirebaseObject rides = postSnapshot.getValue(AvailableRidesFirebaseObject.class);
AvailableRidesFirebaseObject availableRidesFirebaseObject = new AvailableRidesFirebaseObject();
availableRidesFirebaseObject.setAdded_on(rides.getAdded_on());
availableRidesFirebaseObject.setCode(rides.getCode());
availableRidesFirebaseObject.setTime(rides.getTime());
availableRidesFirebaseObject.setDate_of_ride(rides.getDate_of_ride( ));
availableRidesFirebaseObject.setDay(rides.getDay());
availableRidesFirebaseObject.setDropoff_location(rides.getDropoff_location());
availableRidesFirebaseObject.setDropoff_coordinate(rides.getDropoff_coordinate());
availableRidesFirebaseObject.setFullname(rides.getFullname());
availableRidesFirebaseObject.setOffered_by(rides.getOffered_by());
availableRidesFirebaseObject.setPickup_location(rides.getPickup_location());
availableRidesFirebaseObject.setPickup_coordinate(rides.getPickup_coordinate());
availableRidesFirebaseObject.setSeats(rides.getSeats());
availableRidesFirebaseObject.setShare(rides.getShare());
availableRidesFirebaseObject.setVechile_type(rides.getVechile_type());
availableRidesList.add(availableRidesFirebaseObject);
filteredList.add(rides);
Logger.e(list,filteredList.toString());
}
尝试{
adapter = new RecyclerViewAdapter(getActivity(),availableRidesList);
availableRideListView.setHasFixedSize(true);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getContext());
availableRideListView.setLayoutManager(mLayoutManager);
availableRideListView.setAdapter(adapter);
loading.setVisibility(View.GONE);
catch(NullPointerException ne){
ne.printStackTrace();
/*if(availableRidesList.size()== 0){
loading.setVisibility(View.GONE);
@Override
public void onChildChanged(DataSnapshot dataSnapshot,String s){
$ b $ @覆盖
public void onChildRemoved(DataSnapshot dataSnapshot){
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot,String s){
}
$ b $ @Override
public void onCancelled(FirebaseError firebaseError){
}
});
解决方案
顾名思义 onChildAdded ()
只会在子集被添加到集合时被调用。如果没有孩子,就不会被调用。
为了检测没有孩子的情况,可以附加一个值事件监听器。
查询查询= ref.orderByKey()
.startAt(todayDate)
.endAt(tomorrowDate)
.limitToFirst(1);
query.addValueEventListener(new ValueEventListener(){
public void onDataChange(DataSnapshot snapshot){$ b $ if(snapshot.getChildrenCount()== 0){
System.out.println (No children);
};
}
public void onCancelled(DatabaseError error){
throw error.toException();
}
});
I want to check if there is child inside or not.When I have data then it goes inside OnChildAdded
else when there is no child that is not being called? I want to know if there is any data or not? How do I check this?
ref.orderByKey().startAt(todayDate).endAt(tomorrowDate).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
System.out.println("does the child exist? " + dataSnapshot.child("matches").exists());
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
AvailableRidesFirebaseObject rides = postSnapshot.getValue(AvailableRidesFirebaseObject.class);
AvailableRidesFirebaseObject availableRidesFirebaseObject = new AvailableRidesFirebaseObject();
availableRidesFirebaseObject.setAdded_on(rides.getAdded_on());
availableRidesFirebaseObject.setCode(rides.getCode());
availableRidesFirebaseObject.setTime(rides.getTime());
availableRidesFirebaseObject.setDate_of_ride(rides.getDate_of_ride());
availableRidesFirebaseObject.setDay(rides.getDay());
availableRidesFirebaseObject.setDropoff_location(rides.getDropoff_location());
availableRidesFirebaseObject.setDropoff_coordinate(rides.getDropoff_coordinate());
availableRidesFirebaseObject.setFullname(rides.getFullname());
availableRidesFirebaseObject.setOffered_by(rides.getOffered_by());
availableRidesFirebaseObject.setPickup_location(rides.getPickup_location());
availableRidesFirebaseObject.setPickup_coordinate(rides.getPickup_coordinate());
availableRidesFirebaseObject.setSeats(rides.getSeats());
availableRidesFirebaseObject.setShare(rides.getShare());
availableRidesFirebaseObject.setVechile_type(rides.getVechile_type());
availableRidesList.add(availableRidesFirebaseObject);
filteredList.add(rides);
Logger.e("list" ,filteredList.toString());
}
try{
adapter = new RecyclerViewAdapter(getActivity(), availableRidesList);
availableRideListView.setHasFixedSize(true);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getContext());
availableRideListView.setLayoutManager(mLayoutManager);
availableRideListView.setAdapter(adapter);
loading.setVisibility(View.GONE);
}catch(NullPointerException ne){
ne.printStackTrace();
/*if(availableRidesList.size()==0){
loading.setVisibility(View.GONE);
}*/
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
解决方案
As its name implies onChildAdded()
will only be called if a child is added to the collection. If there are no children, it will not be called.
To detect the situation where there are no children, you can attach a value-event listener.
Query query = ref.orderByKey()
.startAt(todayDate)
.endAt(tomorrowDate)
.limitToFirst(1);
query.addValueEventListener(new ValueEventListener() {
public void onDataChange(DataSnapshot snapshot) {
if (snapshot.getChildrenCount() == 0) {
System.out.println("No children");
};
}
public void onCancelled(DatabaseError error) {
throw error.toException();
}
});
这篇关于Firebase onChildAdded在没有数据时不会调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文