作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我开始使用 firebase,一切看起来都很棒,但我有 50k 条记录要显示在 recyclerview
中,我不知道如何分页或类似的东西,因为一次加载所有东西需要太多时间。我也使用了 childEventListener
和 FirebaseUI,但没有成功。
更新 1:最后我开始为更新 1 工作,这不是最好的解决方案,但我想我稍后会进行一些更改。
private String lastKey = null;
private List<Comment> commentList = new ArrayList<>();
private final static int QUERY_LIMIT = 20;
private int page = 0;
private void loadComments() {
page++;
ChildEventListener childEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Comment comment = dataSnapshot.getValue(Comment.class);
commentList.add(comment);
adapter.notifyDataSetChanged();
lastKey = String.valueOf(comment.getTimestamp());
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
if (lastKey != null) {
commentList.clear();
adapter.notifyDataSetChanged();
comments.child(id_post).orderByChild("timestamp").endAt(lastKey).limitToLast(QUERY_LIMIT * page).addChildEventListener(childEventListener);
} else {
comments.child(id_post).orderByChild("timestamp").limitToLast(QUERY_LIMIT).addChildEventListener(childEventListener);
}
}
最佳答案
您可以添加一个值事件监听器来限制您想要接收的结果数量,这是来自 firebase-ui 的一个简单示例
ref.limitToLast(5).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot msgSnapshot: snapshot.getChildren()) {
Chat msg = msgSnapshot.getValue(Chat.class);
Log.i("Chat", chat.getName()+": "+chat.getText());
}
}
使用方法 limitToLast(5) 获取最后添加的 5 个对象。与此相关的其他方法包括 limitToFirst()、limitToLast()、startAt()、endAt() 和 equalTo()可以找到更多信息Here .
关于android - 如何对 Firebase Recyclerview 进行分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38653161/
我是一名优秀的程序员,十分优秀!