Android 使用FirebaseRecyclerPagination创建chatapp

Android 使用FirebaseRecyclerPagination创建chatapp,android,firebase,firebase-realtime-database,android-recyclerview,Android,Firebase,Firebase Realtime Database,Android Recyclerview,我正在尝试使用Firebase创建一个聊天应用程序作为数据库。我想实现FirebaseRecyclerPagination,因为我不想立即加载所有聊天,我只希望每次刷新时加载一定数量的聊天。我遵循本教程[使用Firebase Recycler分页库的示例应用程序] (). 但仍然没有得到我想要的结果 这是我目前的代码 公共类chatterStactivity扩展了AppCompativity{ 私人回收视图mRecyclerView; 私有数据库参考数据库; 私人SwipeRefreshLayo

我正在尝试使用Firebase创建一个聊天应用程序作为数据库。我想实现FirebaseRecyclerPagination,因为我不想立即加载所有聊天,我只希望每次刷新时加载一定数量的聊天。我遵循本教程[使用Firebase Recycler分页库的示例应用程序] (). 但仍然没有得到我想要的结果

这是我目前的代码

公共类chatterStactivity扩展了AppCompativity{
私人回收视图mRecyclerView;
私有数据库参考数据库;
私人SwipeRefreshLayout mSwipeRefreshLayout;
RecyclerView.LayoutManager LayoutManager;
FirebaseRecyclerPaginAdapter mAdapter;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u chat\u test);
mSwipeRefreshLayout=findviewbyd(R.id.swipe\u refresh\u layout);
//初始化回收视图
mRecyclerView=findviewbyd(R.id.recycler\u视图);
mRecyclerView.setHasFixedSize(true);
LinearLayoutManager=新的LinearLayoutManager(此);
mRecyclerView.setLayoutManager(mManager);
//初始化数据库
mDatabase=FirebaseDatabase.getInstance().getReference().child(“对话”).child(“消息”);
final PagedList.Config Config=new PagedList.Config.Builder()
.setEnablePlaceholders(false)
.setInitialLoadSizeHint(2)
.设置预取距离(2)
.setPageSize(2)
.build();
最终DatabasePagingOptions选项=新建DatabasePagingOptions.Builder()
.setLifecycleOwner(此)
.setQuery(mDatabase、config、ChatMessage.class)
.build();
mAdapter=新FirebaseRecyclerPaginAdapter(选项){
@非空
@凌驾
public PostViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int viewType){
返回新的PostViewHolder(LayoutInflater.from(parent.getContext()).flate(R.layout.layout_消息,parent,false));
}
@凌驾
BindViewHolder上的受保护无效(@NonNull PostViewHolder,
int位置,
@非空(消息模型){
持有者。设置项(型号);
}
@凌驾
受保护的void onLoadingState已更改(@NonNull LoadingState状态){
开关(状态){
案例加载_首字母:
案例加载\u更多:
//加载动画
mSwipeRefreshLayout.setRefreshing(true);
打破
已装入案例:
//停止动画
mSwipeRefreshLayout.setRefresh(false);
打破
案件完成:
//已到达数据集的末尾
mSwipeRefreshLayout.setRefresh(false);
打破
案例错误:
重试();
打破
}
}
@凌驾
受保护的void onError(@NonNull DatabaseError DatabaseError){
super.onError(数据库错误);
mSwipeRefreshLayout.setRefresh(false);
databaseError.toException().printStackTrace();
}
};
mSwipeRefreshLayout.setOnRefreshListener(新的SwipeRefreshLayout.OnRefreshListener()){
@凌驾
公共void onRefresh(){
mAdapter.refresh();
}
});
mRecyclerView.setAdapter(mAdapter);
}
//启动侦听适配器
@凌驾
受保护的void onStart(){
super.onStart();
mAdapter.startListening();
}
//停止侦听适配器
@凌驾
受保护的void onStop(){
super.onStop();
mAdapter.stopListening();
}
公共类PostViewHolder扩展了RecyclerView.ViewHolder{
公共最终视图mView;
公共最终文本视图MSG消息;
公共最终文本视图用户;
文本视图毛索尔;
文本视图mDate;
公共聊天室;
公共PostViewHolder(视图){
超级(视图);
mView=视图;
msgMessage=(TextView)view.findViewById(R.id.msgMessage);
user=(TextView)view.findViewById(R.id.user);
}
公共void设置项(ChatMessage ChatMessage){
msgMessage.setText(chatMessage.messageText);
user.setText(chatMessage.messageUser);
}
公共文本视图getMsgMessage(){
返回msgMessage;
}
@凌驾
公共字符串toString(){
返回super.toString();
}
}
}
这是我的
activity\u chat\u test.xml
文件



此代码有什么问题?我没有得到我想要的结果。我正在处理final PagedList.Config Config=new PagedList.Config.Builder()部分执行此操作
。setInitialLoadSizeHint(2)。setPrefetchDistance(2)。setPageSize(2)
仍将加载所有聊天数据,但间隔为。我甚至都不觉得新鲜。执行此操作,`.setInitialLoadSizeHint(2).setPrefetchDistance(1).setPageSize(2)`将仅加载2个聊天数据,当我刷新时,不会显示任何内容added@RalpYosores你找到解决办法了吗?这个代码有什么问题吗?我没有得到我想要的结果。我正在处理最后一个PagedList.Config Config=new PagedList.Config.Builder()部分,执行此操作
。setInitialLoadSizeHint(2)。setPrefetchDistance(2)。setPageSize(2)
仍将加载所有