Firebase recycler paging adapter not updating on data change

Viewed 275

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

1 Answers

FirebaseRecyclerPagingAdapter does not listen for realtime updates. if you want realtime updates, use FirebaseRecyclerAdapter instead.

Related