java - Android:Firebase 搜索查询无法正常工作
问题描述
我对 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”时,它将显示所有数据库结果——搜索不适用于这两个字母。此外,如果我输入第一个字母与数据库条目匹配的搜索字符串,即使字符串的其余部分不匹配,它也会显示此数据库项目。
如果有人能帮助我理解为什么这个搜索查询不能正常工作,我将不胜感激。
解决方案
Firebase 中的查询对大写字母非常敏感。试试这个。
private void firebaseEventSearch(String name) {
//query to search database based on text in textbox - made case insensitive
//Add this part
String firstLetterCapital = query.substring(0, 1).toUpperCase() + query.substring(1);
Query eventSearchQuery = eventRef.orderByChild("name").startAt(firstLetterCapital).endAt(firstLetterCapital + "\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) {
}
});
}
推荐阅读
- ramda.js - 函数式编程 RamdaJs groupBy 与转换
- python - 如何在 django 中列出在前端注册的所有用户配置文件?
- sql - 如何在 SQL 上使用 PIVOT 以及列计数检查和分组等附加条件?
- wordpress - 如何在 WordPress 中隐藏现有的帖子评论
- ios - 当两个开发人员在同一个项目上工作时,为什么故事板或 xib 没有在 gitlab 上合并?
- java - 使用 iText 替换 PDF 文件中的文本
- apache-kafka - Flink Kafka Producer 中的 Exactly-once 语义
- java - 有没有办法为 Allure 中的步骤设置严重性/优先级?
- angular - 带有Angular 5+拖放连接的jsPlumb
- python - 矩形移动