所以,我想要对数据进行搜索,以便返回与搜索匹配的用户列表(有点像Facebook或Twitter的搜索方式)所以我有几个问题,因为这很难在网上找到。首先,用户将数据输入SearchView。我设置了onQueryTextListener
,并在用户点击提交后搜索Firebase数据库。要检索以输入的字符串开头的所有数据的查询,我有这个代码(我知道它可能完全错误):
FirebaseDatabase.getInstance().getReference().child("uploads").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Query query = FirebaseDatabase.getInstance().getReference().orderByChild("username").startAt(s);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
我的第一个问题是:这是检索具有与指定搜索匹配的用户名的所有用户的好方法吗?这就是我的数据库结构为:
如果这是正确的,我该如何处理查询?它可以被视为用户对象的哈希映射吗?还是它什么都没有?一旦我完成,我不确定如何处理它。提前谢谢。
答案 0 :(得分:2)
试试这个:
DatabaseReference db=FirebaseDatabase.getInstance().getReference().child("uploads");
db.orderByChild("username").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
String usernames=dataSnapshot.child("username").getValue().toString();
}
这将获取数据库中的所有用户名。如果您只想要一个用户名,那么您可以这样做:
db.orderByChild("username").equalTo(one_username_value_or_variable).addChildEventListener(new ChildEventListener(){....}