【问题标题】:Is it possible to load specific number of data on Firebase?是否可以在 Firebase 上加载特定数量的数据?
【发布时间】:2017-03-29 00:54:48
【问题描述】:

我正在使用 Firebase 实时数据库制作聊天应用程序。

我做的

public class MessageAdapter extends BaseAdapter implements ChildEventListener{
    ...
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String s) {
    Message msg = dataSnapshot.getValue(Message.class);
    this.addItem(msg);
    this.notifyDataSetChanged();
    }
    ...
}

当数据添加到 Firebase 时,这个 MessageAdapter 会刷新我的 Listview

但是

@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
    Message msg = dataSnapshot.getValue(Message.class);
    this.addItem(msg);
    this.notifyDataSetChanged();
}

onChildAdded 每当我启动应用程序时都会调用该方法。我只想在用户启动应用程序后加载消息。它会加载存储在我的 Firebase 实时数据库中的每条消息。

有没有办法在用户启动应用程序后只加载新消息?此外,我想让它加载特定数量的消息,例如如果我将数字设置为 5,当用户启动应用程序时,它只会从 Firebase 数据库加载 5 条存储的消息。

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    好的,这里有几个问题,首先是让应用在查询数据库之前等待。为此,我建议在线程使用处理程序加载数据时暂停线程几秒钟。

     handler1.postDelayed(new Runnable() {
    
         @Override
         public void run() {
            // Your Database Reference Listener
         }
    }, 1000);
    

    也只听几个来自 firebase 的,只需像这样更改侦听器

     yourDatabaseReferance.limitToFirst(10).addChildEventListener(new ChildEventListener()
    

    【讨论】:

    • 如果我喜欢 yourDatabaseReferance.limitToFirst(10).addChildEventListener(this) 它在初始化后不会再加载了。我该如何处理限制 10 条消息并在此之后添加?
    • 哦,我的错,我使用了 limitToLast(10)
    猜你喜欢
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多