Java Firebase回收器分页适配器未在数据更改时更新
我正在开发一个聊天应用程序,试图通过firebase recycler分页适配器将聊天消息发送到recycler视图。它可以很好地处理第一个条目,但在数据更改时不会更新。我对firebase有点陌生,已经被困在这个问题上好几天了。任何帮助都将不胜感激。这是我的适配器代码-Java Firebase回收器分页适配器未在数据更改时更新,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在开发一个聊天应用程序,试图通过firebase recycler分页适配器将聊天消息发送到recycler视图。它可以很好地处理第一个条目,但在数据更改时不会更新。我对firebase有点陌生,已经被困在这个问题上好几天了。任何帮助都将不胜感激。这是我的适配器代码- Query query= FirebaseDatabase.getInstance().getReference().child("Messages"); PagedList.Config config = new Page
Query query= FirebaseDatabase.getInstance().getReference().child("Messages");
PagedList.Config config = new PagedList.Config.Builder()
.setEnablePlaceholders(false)
.setPrefetchDistance(15)
.setInitialLoadSizeHint(15)
.setPageSize(10)
.build();
DatabasePagingOptions<Messages> options= new DatabasePagingOptions.Builder<Messages>()
.setLifecycleOwner(this)
.setQuery(query, config, Messages.class)
.build();
adapter=new FirebaseRecyclerPagingAdapter<Messages, messageHolder>(options) {
@NonNull
@Override
public messageHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
if (viewType == SENT) {
viewInst = layoutInflater.inflate(R.layout.sent_message_item, parent, false);
return new messageHolder(viewInst);
}
viewInst= layoutInflater.inflate(R.layout.receive_message_item, parent, false);
return new messageHolder(viewInst);
}
@Override
protected void onBindViewHolder(@NonNull messageHolder viewHolder, int position, @NonNull final Messages model) {
// binding data to viewholder
}
@Override
protected void onLoadingStateChanged(@NonNull LoadingState state) {
switch (state) {
case LOADING_INITIAL:
chatListLoader.setVisibility(View.VISIBLE);
break;
case LOADING_MORE:
// Do your loading animation
chatListLoader.setVisibility(View.VISIBLE);
break;
case LOADED:
// Stop Animation
chatListLoader.setVisibility(View.GONE);
break;
case FINISHED:
//Reached end of Data set
break;
case ERROR:
retry();
break;
}
}
@Override
public int getItemCount() {
return super.getItemCount();
}
};
chatList.setAdapter(adapter);
Query Query=FirebaseDatabase.getInstance().getReference().child(“消息”);
PagedList.Config Config=new PagedList.Config.Builder()
.setEnablePlaceholders(false)
.设置预取距离(15)
.setInitialLoadSizeHint(15)
.setPageSize(10)
.build();
DatabasePagingOptions选项=新建DatabasePagingOptions.Builder()
.setLifecycleOwner(此)
.setQuery(查询、配置、消息.class)
.build();
适配器=新的FirebaseRecyclerPaginAdapter(选项){
@非空
@凌驾
public messageHolder onCreateViewHolder(@NonNull ViewGroup父级,int viewType){
LayoutInflater LayoutInflater=LayoutInflater.from(parent.getContext());
如果(viewType==已发送){
viewInst=layoutInflater.flate(R.layout.sent\u message\u item,parent,false);
返回新的消息持有者(视图);
}
viewInst=layoutInflater.flate(R.layout.receive_message_item,parent,false);
返回新的消息持有者(视图);
}
@凌驾
受保护的无效onBindViewHolder(@NonNull messageHolder viewHolder,int position,@NonNull final Messages model){
//将数据绑定到viewholder
}
@凌驾
受保护的void onLoadingState已更改(@NonNull LoadingState状态){
开关(状态){
案例加载_首字母:
setVisibility(View.VISIBLE);
打破
案例加载\u更多:
//加载动画
setVisibility(View.VISIBLE);
打破
已装入案例:
//停止动画
chatListLoader.setVisibility(View.GONE);
打破
案件完成:
//已到达数据集的末尾
打破
案例错误:
重试();
打破
}
}
@凌驾
public int getItemCount(){
返回super.getItemCount();
}
};
setAdapter(适配器);
如果需要代码的任何其他部分,请告诉我。提前感谢
FirebaseRecyclerPaginAdapter
不侦听实时更新。如果需要实时更新,请改用FirebaseRecyclerAdapter