FirebaseRecyclerAdapter的回调未运行

Gen*_* Bo 5 android firebase firebase-realtime-database

通过代码实验室进行Firebase Android友好聊天 - 访问https://codelabs.developers.google.com/codelabs/firebase-android/ - 我遇到了一个问题,即第7步没有达到/调用任何回调:阅读消息

通过/ android-start项目,我能够完成第一步2-6:

  1. 概观
  2. 获取示例代码
  3. 导入入门应用
  4. 创建Firebase控制台项目
  5. 运行入门应用程序
  6. 启用身份验证(通过项目控制台添加包名称和SHA1的Android应用程序等)

但是,当我去做第7步时 - 没有一个回调被调用.我运行应用程序,登录/退出步骤正常.

initial_messages.json按照那里的指示导入并完全复制了第7步的代码(试图确保我可能没有错过任何东西的几次尝试) ..然后甚至尝试在完成/ android项目.还有一个问题,即回调永远不会运行,因此微调器就会挂起.

由于代码太多,我会发布我期待回调运行的部分.谁能告诉我这里可能缺少什么?没问题 - 如果它有助于添加更多我的代码.谢谢阅读

    // mProgressBar.setVisibility(ProgressBar.INVISIBLE);
    // New child entries
    mFirebaseDatabaseReference = FirebaseDatabase.getInstance().getReference();

    SnapshotParser<FriendlyMessage> parser = new SnapshotParser<FriendlyMessage>() {
        @Override
        public FriendlyMessage parseSnapshot(DataSnapshot dataSnapshot) {
            ... 
        }
    };
    ...

    DatabaseReference messagesRef = mFirebaseDatabaseReference.child(MESSAGES_CHILD);

    ... 

    FirebaseRecyclerOptions<FriendlyMessage> options =
            new FirebaseRecyclerOptions.Builder<FriendlyMessage>()
                    .setQuery(messagesRef, parser)
                    .build();

    mFirebaseAdapter = new FirebaseRecyclerAdapter<FriendlyMessage, MessageViewHolder>(options) {
        @Override
        public MessageViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
            ... 
        }

        @Override
        protected void onBindViewHolder(final MessageViewHolder viewHolder,
                                        int position,
                                        FriendlyMessage friendlyMessage) {
            ....

        }
    };

    mFirebaseAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
        @Override
        public void onItemRangeInserted(int positionStart, int itemCount) {
            ...
        }
    });


    mMessageRecyclerView.setAdapter(mFirebaseAdapter);
Run Code Online (Sandbox Code Playgroud)

Gri*_*orr 3

在 FirebaseUI 3.0 版本中,引入了新的生命周期策略。FirebaseRecyclerAdapter因此,您现在需要在适配器上显式调用startListening()&来指示它开始和停止从数据库检索数据。stopListening()

来自FirebaseUI 3.0 升级指南

适配器生命周期 - 在以前的版本中,适配器在实例化后立即开始监听,并调用cleanup()停止监听。在 3.x 中,您必须显式调用startListening()stopListening()将 a 传递LifecycleOwner给选项构建器。

这是最近发布的版本,代码实验室似乎尚未更新以反映这一重大更改。我已将此作为GitHub 存储库上的问题firebase/friendlychat-android提出。