【发布时间】:2020-06-02 13:04:06
【问题描述】:
我正在开发一个聊天应用程序,我正在尝试通过 firebase 回收器分页适配器将聊天消息发送到回收器视图。它适用于第一个条目,但在数据更改时不会更新。我对firebase有点陌生,并且已经被这个问题困扰了好几天。任何帮助,将不胜感激。这是我的适配器代码-
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);
如果需要代码的任何其他部分,请告诉我。提前致谢
【问题讨论】:
标签: java android firebase firebase-realtime-database