如何检查Firebase Recylerview是否具有值或在Android中为空? [英] How to check if firebase recylerview has values or it is empty in android?

查看:51
本文介绍了如何检查Firebase Recylerview是否具有值或在Android中为空?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不喜欢向用户显示空的RecyclerView.我知道recyclerview中有getItemCount方法,但我认为reyclerview可能在单独的线程上执行.这是因为每当我尝试调用adapter.getitemcount时,即使我的recyclerview将具有来自firebase的值,它也会迅速给计数0.因此,我认为也许直到值到达之前,getItemCount方法才被执行并返回0,或者它可能是在单独的线程上执行的.但是,无论哪种方式,即使我的recyclerview具有来自firebase的值,我也得到0.所以我想检查一下我的Firebase Recycler是否为空,然后相应地更改视图,因为我不希望显示用户和清空Recyclerview(一个空的活动). 请给我建议,我应该怎么检查?顺便说一下,这是我简单的firebase适配器代码:

I dont like to show empty RecyclerView to users. I know there is getItemCount method in recyclerview, but i think reyclerview is executed on separate thread maybe. Its because whenever i try to call adapter.getitemcount it gives count 0 quickly even when my recyclerview will have values coming from firebase. So i think maybe till the values come the getItemCount method is executed before and returns 0 or maybe it is executed on separate thread. But either way i get 0 even when my recyclerview has values coming from firebase. So i want to check if my firebase recycler is empty or not and then change views accordingly, becoz i dont like to show the users and empty recyclerview (an empty activity). plz suggest how should i check it? btw heres my simple firebase adapter code :

 allFriendsAdapter = new FirebaseRecyclerAdapter<FriendsModel, ViewHolder>(friendsOptions) {
            @Override
            protected void onBindViewHolder(@NonNull final ViewHolder holder, final int position, @NonNull FriendsModel model) {


                  }

                  @Override
                  public void onCancelled(DatabaseError databaseError) {

                  }
              });


 if(allFriendsAdapter .getItemcount==0){ //this is always returning 0 even when my recyclerview has values

}

推荐答案

您可以使用ValueEventListener检查是否存在任何值:

You can use ValueEventListener to check if any values exists:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Users");
Query queries = ref.orderByChild("name").equalTo(name_here);
queries.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {
                Toast.makeText(HomeActivity.this,"data exists",Toast.LENGTH_SHORT).show();

            }
            else{
                Toast.makeText(HomeActivity.this,"No data exists",Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

在适配器中,您需要使用查询来获取数据,例如上面的查询,它还会检查数据是否存在.

In your Adapter, you need to use a query to be able to get the data, example as the above query and it will also check if the data exists.

然后您可以通过构建FirebaseRecyclerOptions来配置适配器:

Then you can configure the adapter by building FirebaseRecyclerOptions:

FirebaseRecyclerOptions<FriendsModel> friendsOptions =
        new FirebaseRecyclerOptions.Builder<FriendsModel>()
                .setQuery(queries, FriendsModel.class)
                .build();

这篇关于如何检查Firebase Recylerview是否具有值或在Android中为空?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆