gpt4 book ai didi

android - 如何对 Firebase Recyclerview 进行分页

转载 作者:行者123 更新时间:2023-11-29 01:17:29 27 4
gpt4 key购买 nike

我开始使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com