我正在构建一个聊天应用。我的Firebase数据库中有一个特定节点,用于存储此用户与其他人的对话(消息列表)。我使用FirebaseRecyclerAdapter加载这些消息,这是FirebaseUI的一部分。它工作得很好,但我担心缩放。如果一个对话要说有20,000条消息(许多对话都会这样做!)它会加载吗? Firebase是一次性还是批量加载来自Firebase数据库的数据? 如果没有,我究竟如何将数据批量加载到RecylcerView中(如果有1000个项目,最初是1000 - 980,当用户向上滚动980 - 960等时)我明白我可以使用endAt()和limitToLast()将数据批量加载到数据源(ArrayList)中的函数,但是如何实现批量加载的RecyclerView?
recyclerView.setHasFixedSize(true);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
linearLayoutManager.setStackFromEnd(true);
recyclerView.setLayoutManager(linearLayoutManager);
final DatabaseReference databaseReference = /*Database Reference */ ;
databaseReference.keepSynced(true);
firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Chat, RecyclerView.ViewHolder>(Chat.class, R.layout.chat_message_received, RecyclerView.ViewHolder.class, databaseReference.orderByChild("timeStamp").getRef()) {
//...Code
};
recyclerView.setAdapter(firebaseRecyclerAdapter);
recyclerView.scrollToPosition(firebaseRecyclerAdapter.getItemCount() - 1);
答案 0 :(得分:0)
FirebaseUI适配器通过您传递给构造函数的Query
或DatabaseReference
加载您指向它们的所有数据。没有内置的延迟加载或分页。
另见: