我正在为我的Android应用程序使用Firebase数据库。我在应用程序中实现了搜索功能。在我的数据库中,每个以“A”开头的标题仅在我使用Capital“A”开始搜索时显示。当我输入小写“a”时,它显示没有找到结果。我也希望能够搜索小写变体。请帮帮我。谢谢。这是我的搜索代码。
private void firebaseUserSearch(String searchText) {
Toast.makeText(Idioms.this, "Started Search", Toast.LENGTH_LONG).show();
Query firebaseSearchQuery = mUserDatabase.orderByChild("Title").startAt(searchText).endAt(searchText + "\uf8ff");
FirebaseRecyclerAdapter<Blog,BlogViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Blog, BlogViewHolder>(
Blog.class,
R.layout.bank_row,
BlogViewHolder.class,
firebaseSearchQuery
) {
@Override
protected void populateViewHolder(BlogViewHolder viewHolder, Blog model, int position) {
viewHolder.setDetails(getApplicationContext(), model.getTitle(), model.getDescription(), model.getExample());
}
};
mResultList.setAdapter(firebaseRecyclerAdapter);
}
答案 0 :(得分:1)
有两种方法可以解决此问题。第一种方法是使用方法toLowerCase()
以小写形式将项目名称以小写形式存储在数据库中。因此,如果您想通过小写搜索名称将完美无缺。然后,如果您想在活动中显示名称,并且想要将第一个字母大写,那么只需使用以下代码行:
String firstLetterCapital = lowerCaseItemName.substring(0, 1).toUpperCase() + lowerCaseItemName.substring(1);
因此,如果您的项目名称为item
,则使用上述代码,结果将为:Item
。
第二种方法是将商品的小写名称存储为商品的属性,如下所示:
Firebase-root
|
--- items
|
--- ItemIdOne
|
--- itemName: Item
|
--- itemToLowerCase: item
然后,要创建搜索,您可以使用如下所示的查询:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference itemsRef = rootRef.child("items");
Query query = itemsRef.orderByChild("itemToLowerCase").startAt(itemName.toLowerCase());