I'm working on a chat application, where i'm trying to get the chat messages to recycler view through firebase recycler paging adapter. It is working fine with the first entry, but is not updating when the data is changed. I'm kind of new to firebase and have been stuck on this problem for days. Any help would be appreciated. Here's my code for adapter-
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);
Please let me know if any other part of the code is required. Thanks in advance