android - 创建查询以获取等于当前用户 ID 的值
问题描述
我想从键“group_member”中获取所有与当前用户 ID 匹配的值。键“group_member”由用户 ID 组成。数据库截图:
为此,我创建查询 Query query = mGroupDatabase.child("group_member").equalTo(mCurrent_user_id);
但没有得到任何结果。之后,这个结果需要显示到 RecyclerView 中。
mGroupList = (RecyclerView) mMainView.findViewById(R.id.group_list);
mAuth = FirebaseAuth.getInstance();
mCurrent_user_id = mAuth.getCurrentUser().getUid();
mGroupDatabase = FirebaseDatabase.getInstance().getReference().child("Groups");
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
linearLayoutManager.setReverseLayout(true);
linearLayoutManager.setStackFromEnd(true);
mGroupList.setHasFixedSize(true);
mGroupList.setLayoutManager(linearLayoutManager);
Query query = mGroupDatabase.child("group_member").equalTo(mCurrent_user_id);
query.keepSynced(true);
FirebaseRecyclerOptions<Group> options =
new FirebaseRecyclerOptions.Builder<Group>()
.setQuery(query, Group.class)
.build();
firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Group, ViewHolder>(options) {
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Create a new instance of the ViewHolder, in this case we are using a custom
// layout called R.layout.message for each item
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.adapter_users_activity_layout, parent, false);
return new ViewHolder(view);
}
@Override
protected void onBindViewHolder(final ViewHolder viewHolder, int position, final Group group) {
Log.d("sdfdfgghhjhj", group.getGroup_member());
@Override
public void onStart() {
super.onStart();
firebaseRecyclerAdapter.startListening();
}
@Override
public void onStop() {
super.onStop();
if (firebaseRecyclerAdapter != null) {
firebaseRecyclerAdapter.stopListening();
}
}
在上面的代码中,Log.d("sdfdfgghhjhj", group.getGroup_member());
没有给出任何值。
团体:
package com.example.messenger.messenger;
public class Group {
String name, group_member;
public Group() {
}
public Group(String name, String group_member) {
this.name = name;
this.group_member = group_member;
}
public String getGroup_member() {
return group_member;
}
public void setGroup_member(String group_member) {
this.group_member = group_member;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
解决方案
要解决此问题,请更改以下代码行:
Query query = mGroupDatabase.child("group_member").equalTo(mCurrent_user_id);
至
Query query = mGroupDatabase.orderByChild("group_member").equalTo(mCurrent_user_id);
推荐阅读
- itext7 - 将页眉、页脚和页码添加到转换为 PDF iText 7 的 HTML 页面
- java - 为什么我的最后一个方法不打印?我怎样才能让它执行
- c# - VS 2017 缺少模板空白应用程序(Android)c#
- sql - 查询以根据不同的其他列值对相似的列值进行分组
- ansible - Ansible 2.5 包含带变量的角色
- java - Spring IllegalState 无法在单元测试中创建数据源不稳定行为
- javascript - 如何检查数组的所有值是否都是字符串?
- r - 如何过滤R中的数据并绘制词云?
- python - 如何在前两个空格处拆分每个列表条目并将它们全部添加到新列表中
- python - Python/MariaDB:将 .csv 数据转换为数据帧并导出到数据库