gpt4 book ai didi

android - FirebaseRecyclerAdapter 未运行的回调

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:51:24 27 4
gpt4 key购买 nike

浏览 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);

最佳答案

在 FirebaseUI 3.0 版中,一个新的 lifecycle policy for FirebaseRecyclerAdapter被介绍。因此,您现在需要在适配器上显式调用 startListening()stopListening() 以指示它开始和停止从数据库中检索数据。

来自FirebaseUI 3.0 upgrade guide :

Adapter Lifecycle - in previous versions the adapters began listening immediately upon instantiation and had a cleanup() call to stop listening. In 3.x you must explicitly call startListening() and stopListening() or pass a LifecycleOwner to the options builder.

这是一个非常新的版本,代码实验室似乎尚未更新以反射(reflect)这一重大变化。我已经提出这个作为 an issue on the firebase/friendlychat-android GitHub repo .

关于android - FirebaseRecyclerAdapter 未运行的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46782772/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com