如何根據用戶名搜索用戶?我已經看了看這件事情無數SO職位,但我仍然無法達到我想要做的。我試圖運用我在那些帖子看到,如下所示:Firebase Android - startAt()和endAt()無法正常工作?
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
你正在使用什麼'queryText'?如果你使用'.equalTo(「fakeuser3」)而不是'startAt()'和'endAt()',會發生什麼? – weibeld
queryText是從「搜索欄」輸入的文本。嘗試使用.equalsTo()會再次返回所有用戶:(我開始懷疑我是否使用了正確的聽衆.. –
賓果!請參閱我的答案。 – weibeld