我对 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) {
}
});
}
Run Code Online (Sandbox Code Playgroud)
它在大多数情况下工作正常,但是,当我输入字母“A”或“B”时,它将显示所有数据库结果 - 搜索不适用于这两个字母。另外,如果我输入第一个字母与数据库条目匹配的搜索字符串,它将显示该数据库项目,即使字符串的其余部分与它不匹配。
如果有人能帮助我理解为什么这个搜索查询不能正常工作,我将非常感激。