gpt4 book ai didi

android - Firebase Android - startAt() 和 endAt() 无法正常工作?

转载 作者:行者123 更新时间:2023-11-29 16:55:33 24 4
gpt4 key购买 nike

如何根据用户名搜索用户?我已经看过很多关于这个问题的 SO 帖子,但仍然无法实现我想做的事情。我已经尝试应用我在这些帖子中看到的内容,如下所示:

DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference("users");
usersRef.orderByChild("username")
.startAt(queryText)
.endAt(queryText+"\uf8ff");

usersRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
searchList = new ArrayList<>();
for (DataSnapshot postSnapshot: snapshot.getChildren()) {
User user = postSnapshot.getValue(User.class);
Log.d("USER: ", "" + user.getUsername());

searchList.add(user);
}

adapter = new UserCardAdapter(getContext(), searchList);
recyclerView.setAdapter(adapter);
}

@Override
public void onCancelled(DatabaseError databaseError) {
Log.e("onQueryTextChange: " ,databaseError.getMessage());
}
});

但是,仍然会检索到所有用户。我已经看到 startAt() 和 endAt() 的用法据说可以在其他帖子上为其他人工作,但我无法设法让它为我工作..

这是用户数据的存储方式: User Data Structure

最佳答案

你几乎做对了,但你应该在已经应用 orderBy() , startAt(), 的数据库引用之后添加 addListenerForSingleValueEvent >endAt() 像这样。

 usersRef.orderByChild("username")
.startAt(queryText)
.endAt(queryText+"\uf8ff")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
searchList = new ArrayList<>();
for (DataSnapshot postSnapshot: snapshot.getChildren()) {
User user = postSnapshot.getValue(User.class);
Log.d("USER: ", "" + user.getUsername());

searchList.add(user);
}

adapter = new UserCardAdapter(getContext(), searchList);
recyclerView.setAdapter(adapter);
}

@Override
public void onCancelled(DatabaseError databaseError) {
Log.e("onQueryTextChange: " ,databaseError.getMessage());
}
});

关于android - Firebase Android - startAt() 和 endAt() 无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45138431/

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