我是一个相对新手的Android应用程序开发者。我创建了一个简单的搜索查询,通过名称搜索我的Firebase数据库(请参见下面的代码):
private void firebaseEventSearch(String name) {
//query to search database based on text in textbox - made case insensitive
Query eventSearchQuery = eventRef.orderByChild("name").startAt(name.toUpperCase()).endAt(name.toLowerCase() + "\uf8ff");
eventSearchQuery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot eventSnapshot : dataSnapshot.getChildren()) {
Event event = eventSnapshot.getValue(Event.class);
events.add(event);
}
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
大部分情况下都可以正常工作,但是当我输入字母"A"或"B"时,它会显示所有数据库结果 - 搜索对这两个字母不起作用。此外,如果我输入一个搜索字符串,其中第一个字母与数据库条目匹配,它将显示此数据库条目,即使该字符串的其余部分与其不匹配。
如果有人能帮助我理解为什么这个搜索查询不能正常工作,我将非常感激。
eventRef.orderByChild("name").equalTo(name)
。 - Frank van Puffelen