【问题标题】:Firebase recycler paging adapter not updating on data changeFirebase 回收器分页适配器未在数据更改时更新
【发布时间】: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


    【解决方案1】:

    FirebaseRecyclerPagingAdapter 不监听实时更新。如果您想要实时更新,请改用FirebaseRecyclerAdapter

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      • 2021-03-12
      • 2021-07-21
      • 2017-02-09
      • 2018-08-27
      • 2016-04-05
      • 1970-01-01
      相关资源
      最近更新 更多