如何使用dataSnapshot.hasChildren()检查recyclerview是否为空

prototype86:

我正在使用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()给出真实值,但在没有数据可用时,其他条件不起作用

Zain:

您可以使用 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章