通过代码实验室进行Firebase Android友好聊天 - https://codelabs.developers.google.com/codelabs/firebase-android/ - 我遇到的问题是第7步没有达到/调用回调:阅读消息
通过/ android-start项目,我能够完成第一步2-6:
但是,当我去做第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);
答案 0 :(得分:3)
在FirebaseUI 3.0版中,引入了新的lifecycle policy for FirebaseRecyclerAdapter
。因此,您现在需要明确呼叫startListening()
&amp;适配器上的stopListening()
指示它启动&amp;停止从数据库中检索数据。
来自FirebaseUI 3.0 upgrade guide:
适配器生命周期 - 在先前版本中,适配器开始监听 在实例化后立即进行
cleanup()
呼叫停止 听着。在3.x中,您必须明确调用startListening()
和stopListening()
或将LifecycleOwner
传递给选项构建器。
这是一个非常新的版本,看起来代码实验室尚未更新以反映这一重大变化。我将其提升为an issue on the firebase/friendlychat-android
GitHub repo。