如何检查 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 方法并且 returns 0 或者它可能在单独的线程上执行。但无论哪种方式,即使我的 recyclerview 具有来自 firebase 的值,我也会得到 0。所以我想检查我的 firebase recycler 是否为空,然后相应地更改视图,因为我不喜欢向用户显示空的 recyclerview(空 activity)。
请建议我应该如何检查它?顺便说一句,这是我简单的 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
}
您可以使用 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();
只需覆盖 onDataChanged
并在那里检查 getItemCount()
。
我不喜欢向用户显示空的 RecyclerView。我知道 recyclerview 中有 getItemCount 方法,但我认为 reyclerview 可能是在单独的线程上执行的。这是因为每当我尝试调用 adapter.getitemcount 时,即使我的 recyclerview 具有来自 firebase 的值,它也会快速给出计数 0。所以我想也许直到值出现之前执行 getItemCount 方法并且 returns 0 或者它可能在单独的线程上执行。但无论哪种方式,即使我的 recyclerview 具有来自 firebase 的值,我也会得到 0。所以我想检查我的 firebase recycler 是否为空,然后相应地更改视图,因为我不喜欢向用户显示空的 recyclerview(空 activity)。 请建议我应该如何检查它?顺便说一句,这是我简单的 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
}
您可以使用 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();
只需覆盖 onDataChanged
并在那里检查 getItemCount()
。