设置对 FirebaseRecyclerAdapter 的不同引用 android
Set different References to FirebaseRecyclerAdapter android
我有这个数据库结构:
当时我有以下代码:
final DatabaseReference messagesRef = mFirebaseDatabaseReference.child("users/").child(firebase_user_uid + "/").child("chats/");
messagesRef.keepSynced(true);
FirebaseRecyclerOptions<ChatListMediation> options = new FirebaseRecyclerOptions.Builder<ChatListMediation>().setQuery(messagesRef, parser).build();
mFirebaseAdapter = new FirebaseRecyclerAdapter<ChatListMediation, MessageViewHolder>(options) {
@Override
public MessageViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
final int layout = viewType == TYPE_INACTIVE ? R.layout.item_chatlist : R.layout.item_chatlist_selected;
View view = LayoutInflater.from(viewGroup.getContext()).inflate(layout, viewGroup, false);
return new MessageViewHolder(view);
}
@Override
protected void onBindViewHolder(final MessageViewHolder viewHolder, int position, final ChatListMediation chatListMediation) {
viewHolder.chatKey = chatListMediation.getChatkey();
}
};
那么,我们开始吧。我为以下设置的 FirebaseRecyclerAdapter FirebasedatabseReference
:users/firebase_user_uid/chats
。所以在这里我得到了一个聊天键列表。但现在我需要一些人进入 FirebaseDatabseReference
"chats/chat_key" 并阅读那里的信息。例如 "chattype" 或 "createdTime" 。起初,我在我想要的不同事物上有很多 addValueEventListener,但我认为那不是最好最快的方法。也许一秒钟 FirebaseReycyclerAdapter
?或者我可以在运行时切换 FirebaseRecyclerAdapter
的 FirebaseDatabseRefernce 吗?不知道找谁解决
我希望你能理解我的问题并能帮助我。如果有任何问题,请告诉我。
提前致谢。
要解决这个问题,请更改这行代码:
DatabaseReference messagesRef = mFirebaseDatabaseReference.child("users/").child(firebase_user_uid + "/").child("chats/");
和
DatabaseReference messagesRef = mFirebaseDatabaseReference
.child("users")
.child(firebase_user_uid)
.child("chats");
如您所见,我已经删除了 /
,否则您的引用将包含双 /
。您也可以通过这样的简短方式获得您的参考:
DatabaseReference messagesRef = mFirebaseDatabaseReference
.child("users/" + firebase_user_uid + "/chats/");
我还建议您使用这样的 Query
:
Query query = messagesRef.orderByChild("active").equalsTo(true);
我有这个数据库结构:
当时我有以下代码:
final DatabaseReference messagesRef = mFirebaseDatabaseReference.child("users/").child(firebase_user_uid + "/").child("chats/");
messagesRef.keepSynced(true);
FirebaseRecyclerOptions<ChatListMediation> options = new FirebaseRecyclerOptions.Builder<ChatListMediation>().setQuery(messagesRef, parser).build();
mFirebaseAdapter = new FirebaseRecyclerAdapter<ChatListMediation, MessageViewHolder>(options) {
@Override
public MessageViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
final int layout = viewType == TYPE_INACTIVE ? R.layout.item_chatlist : R.layout.item_chatlist_selected;
View view = LayoutInflater.from(viewGroup.getContext()).inflate(layout, viewGroup, false);
return new MessageViewHolder(view);
}
@Override
protected void onBindViewHolder(final MessageViewHolder viewHolder, int position, final ChatListMediation chatListMediation) {
viewHolder.chatKey = chatListMediation.getChatkey();
}
};
那么,我们开始吧。我为以下设置的 FirebaseRecyclerAdapter FirebasedatabseReference
:users/firebase_user_uid/chats
。所以在这里我得到了一个聊天键列表。但现在我需要一些人进入 FirebaseDatabseReference
"chats/chat_key" 并阅读那里的信息。例如 "chattype" 或 "createdTime" 。起初,我在我想要的不同事物上有很多 addValueEventListener,但我认为那不是最好最快的方法。也许一秒钟 FirebaseReycyclerAdapter
?或者我可以在运行时切换 FirebaseRecyclerAdapter
的 FirebaseDatabseRefernce 吗?不知道找谁解决
我希望你能理解我的问题并能帮助我。如果有任何问题,请告诉我。
提前致谢。
要解决这个问题,请更改这行代码:
DatabaseReference messagesRef = mFirebaseDatabaseReference.child("users/").child(firebase_user_uid + "/").child("chats/");
和
DatabaseReference messagesRef = mFirebaseDatabaseReference
.child("users")
.child(firebase_user_uid)
.child("chats");
如您所见,我已经删除了 /
,否则您的引用将包含双 /
。您也可以通过这样的简短方式获得您的参考:
DatabaseReference messagesRef = mFirebaseDatabaseReference
.child("users/" + firebase_user_uid + "/chats/");
我还建议您使用这样的 Query
:
Query query = messagesRef.orderByChild("active").equalsTo(true);