相关疑难解决方法(0)

如何只检索新数据?

我正在尝试为我的网站管理员创建简单的通知系统,我只需要向每个管理员用户发送实时消息.但是当我使用firebase时,它会在每个页面上加载旧数据,并且用户可以看到来自数据库的所有消息.如果我设置limit(1),用户将在每个页面重新加载时看到最后一个通知:

var eventsList = new Firebase('https://*****-messages.firebaseio.com/');

eventsList.on('child_added', function(message) {
    var message = message.val();
    $.notification(message.message);
});
Run Code Online (Sandbox Code Playgroud)

如何在没有旧通知历史的情况下仅加载新邮件?

firebase

22
推荐指数
2
解决办法
2万
查看次数

具有空视图的FirebaseRecyclerAdapter

我知道有很多方法可以为RecyclerView提供一个空视图.但我的问题是针对FirebaseRecyclerView.

我的布局是:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
    android:id="@+id/feed_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbars="vertical" />

<ProgressBar
    android:id="@+id/feed_loading"
    style="?android:attr/progressBarStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:visibility="gone"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

所以我在RecyclerView填充其项目之前显示正在加载ProgressBar.现在如果服务器没有任何项目怎么办?在这种情况下,我的RecyclerView始终为空,我的Loading ProgressBar始终对用户可见.

因此,我希望显示一些空布局,而不是无限期地显示ProgressBar.例如"找不到数据"或类似的消息.

最终结果应该是:ProgressBar应该显示,直到数据加载到RecyclerView,一旦数据加载,ProgressBar应该是不可见的.但是如果服务器中没有数据,则应显示一些空布局而不是ProgressBar.

在普通的RecyclerView中,我们有一个数据集(某些ArrayList等),如果它是空的,那么我们可以显示那个空布局.但是对于FirebaseRecyclerAdapter,我在我的Activity或Context中没有Snapshot的引用.我也没有任何回调告诉我服务器中没有数据.

任何解决方法都会有很大帮助.

android firebase android-recyclerview firebase-realtime-database firebaseui

16
推荐指数
2
解决办法
5635
查看次数

如何丢弃Firebase数据库中的初始数据

我正在制作一个简单的应用程序,通知客户其他客户点击了一个按钮.我db使用以下方法将点击存储在Firebase()中:

db.push({msg:data});
Run Code Online (Sandbox Code Playgroud)

所有客户都会收到其他用户的点击通知on,例如

db.on('child_added',function(snapshot) { 
  var msg = snapshot.val().msg; 
});
Run Code Online (Sandbox Code Playgroud)

但是,当页面首次加载时,我想丢弃堆栈中的任何现有数据.我的策略是db.once()在定义之前调用db.on('child_added',...)以获取初始数量的子节点,然后使用它来丢弃该调用的数量db.on('child_added',...).

不幸的是,所有对db.on('child_added',...)的调用都是我能够获得初始计数之前发生的,所以它失败了.

我怎样才能有效而简单地丢弃初始数据?

firebase

14
推荐指数
2
解决办法
5739
查看次数