繁体   English   中英

如何检查firebase recylerview是否有值或在android中为空?

[英]How to check if firebase recylerview has values or it is empty in android?

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

 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

}

只需覆盖onDataChanged并在那里检查getItemCount()

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

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) {

        }
    });

在您的 Adapter 中,您需要使用查询才能获取数据,例如上面的查询,它还会检查数据是否存在。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM