我正在使用firebasedatabase将数据显示到recyclerview中。我想在我的recyclerview为空并且要dataSnapshot.hasChildren()
用于检查数据库haschildren 时显示简单的吐司。这是代码
private void Geofireinit() {
started = true;
databaseReference=FirebaseDatabase.getInstance().getReference().child(("tracker"));
GeoFire fire=new GeoFire(databaseReference);
GeoQuery geoQuery = fire.queryAtLocation(new GeoLocation(20.887715, 77.757623), 50);
geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
@Override
public void onKeyEntered(String key, GeoLocation location) {
Log.e("id", key);
getkeys(key);
}
@Override
public void onKeyExited(String key) {
Log.d("TAG", "onKeyExited: ");
for (int i=0;i<arrayList.size();i++)
{
Log.i("tte",String.valueOf(arrayList.get(i).getText()));
if (key.equals(arrayList.get(i).getText())) {
arrayList.remove(i);
adapter.notifyItemRemoved(i);
}
if (arrayList.size()==0)
{
Log.i("exited",String.valueOf(arrayList.size()));
}
}
}
@Override
public void onKeyMoved(String key, GeoLocation location) {
}
@Override
public void onGeoQueryReady() {
}
@Override
public void onGeoQueryError(DatabaseError error) {
}
});
}
ArrayList<Mylist> arrayList=new ArrayList<>();
private void getkeys(String key)
{
myref=FirebaseDatabase.getInstance().getReference().child("buses").child(key);
myref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists())
{
Mylist mylist=new Mylist();
mylist.setText(dataSnapshot.child("text").getValue().toString());
arrayList.add(mylist);
adapter=new Adapter(MainActivity.this,arrayList);
recyclerView.setAdapter(adapter);
Log.i("chaadad", String.valueOf(dataSnapshot.hasChild("buses")));
}
if (dataSnapshot.hasChildren())
{
// do something
}else
Toast.makeText(MainActivity.this,"empty",Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
当数据可用时,dataSnapshot.hasChildren()给出真实值,但在没有数据可用时,其他条件不起作用
您可以使用 dataSnapshot.getChildrenCount()
if (dataSnapshot.getChildrenCount() > 0)
{
// do something
} else
Toast.makeText(MainActivity.this,"empty",Toast.LENGTH_SHORT).show();
更新:
检查.exists()的else条件是否为空列表
if (dataSnapshot.exists())
{
Mylist mylist=new Mylist();
mylist.setText(dataSnapshot.child("text").getValue().toString());
arrayList.add(mylist);
adapter=new Adapter(MainActivity.this,arrayList);
recyclerView.setAdapter(adapter);
Log.i("chaadad", String.valueOf(dataSnapshot.hasChild("buses")));
} else
Toast.makeText(MainActivity.this,"empty",Toast.LENGTH_SHORT).show();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句