gpt4 book ai didi

java - Android:Firebase 搜索查询无法正常工作

转载 作者:太空宇宙 更新时间:2023-11-03 12:26:13 24 4
gpt4 key购买 nike

我是 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) {

}
});
}

关于java - Android:Firebase 搜索查询无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54155576/

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