【问题标题】:How to show Empty Message when RecyclerView is empty?RecyclerView 为空时如何显示空消息?
【发布时间】:2021-05-08 14:41:51
【问题描述】:

我正在从Firebase 加载一些内容,同时也在使用FirebaseRecyclerAdapter

这是成功显示 Firebase 数据的函数:

    public void showNotifications() {
    databaseReference = FirebaseDatabase.getInstance().getReference("Notifications");
    databaseReference.keepSynced(true);
    options = new FirebaseRecyclerOptions.Builder<NotificationModel>()
            .setQuery(FirebaseDatabase.getInstance().getReference("Notifications"), NotificationModel.class)
            .build();
    notifRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    notificationAdaper = new NotificationAdaper(options, NotificationActivity.this);
    notifRecyclerView.setAdapter(notificationAdaper);
    checkEmpty();  //will show empty image when recyclerView is empty
}

这是我的 checkEmpty() 方法:

    private void checkEmpty() {
    if (notificationAdaper.getItemCount() == 0) {
        Log.e("Item count", String.valueOf(notificationAdaper.getItemCount()));
        no_notif.setVisibility(View.VISIBLE);
    } else {
        no_notif.setVisibility(View.GONE);
    }
}

这是用户界面代码:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    tools:context="com.devapps.NotificationActivity">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        app:theme="@style/ToolbarTheme">


        <TextView
            android:id="@+id/toolbarTextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:maxLines="1"
            android:text="Notifications"
            android:textColor="@android:color/white"
            android:textSize="18sp"
            android:textStyle="bold"
            android:visibility="visible" />


    </androidx.appcompat.widget.Toolbar>

    <ImageView
        android:id="@+id/no_notif"
        android:layout_width="260dp"
        android:layout_height="260dp"
        android:visibility="gone"
        android:layout_centerInParent="true"
        android:scaleType="centerCrop"
        android:src="@drawable/nonotification" />

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/notifRecyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/toolbar" />
</RelativeLayout>

即使 Firebase 数据库中有项目,空图像占位符也始终可见。如何解决。

每次我收到 E/Item count: 0,即使 Firebase 数据库中有项目。

【问题讨论】:

  • 而更具体的答案,我们需要看到你的用户界面代码
  • 已添加,请看@KamalNayan
  • 查看答案.....我已经更新了

标签: android firebase-realtime-database android-recyclerview


【解决方案1】:

可能您只是在更改空视图(用于通知用户)的可见性,而不是隐藏其他视图。就像您有回收站视图一样,因此您需要隐藏它并查看空消息,否则消息视图可能位于回收站视图后面,因此不可见。

解决方案

隐藏该特定屏幕上的其他视图

 private void checkEmpty() {
if (notificationAdaper.getItemCount() == 0) {
    Log.e("Item count", String.valueOf(notificationAdaper.getItemCount()));
    no_notif.setVisibility(View.VISIBLE);
   notifRecyclerView.setVisibility(View.GONE);

} else {
    no_notif.setVisibility(View.GONE);
   notifRecyclerView.setVisibility(View.VISIBLE);
}

}

注意:notifRecyclerView 是 recycler view 的 id ......我已将其用作参考.....如果您在文件中使用另一个名称声明了 recycler view,则使用该名称代替notifRecyclerView

【讨论】:

  • 没看懂,为什么要隐藏其他View,没有Data/Item的时候,RecyclerView本身就隐藏了
  • 它本身是如何隐藏的?
  • 对不起,先生,您的回答没有解释任何内容,请添加一些代码示例
  • 它在屏幕上,但它没有数据,所以你无法识别它。
  • 没问题Sainita......你不打扰,我们是来帮忙的......随时问
【解决方案2】:

您可以使用此方法获取 Recycler View Count

recyclerView.getAdapter().getItemCount();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多