【发布时间】:2015-12-20 16:06:17
【问题描述】:
我有一个带有 FirebaseRecyclerAdapter 的 RecyclerView。当用户开始在 SearchView 中输入内容时,我想用名称列表填充 RecyclerView。
public class SchoolsAdapter extends FirebaseRecyclerAdapter<School, SchoolsAdapter.SchoolViewHolder> {
public SchoolsAdapter(Query ref) {
super(School.class, R.layout.item_school, SchoolViewHolder.class, ref);
}
@Override
public void populateViewHolder(SchoolViewHolder schoolViewHolder, School school, int position) {
schoolViewHolder.name.setText(school.getName());
schoolViewHolder.address.setText(school.getAddress());
}
static class SchoolViewHolder extends RecyclerView.ViewHolder {
public TextView name;
public TextView address;
public SchoolViewHolder(View itemView) {
super(itemView);
name = (TextView) itemView.findViewById(R.id.school_item_tview_name);
address = (TextView) itemView.findViewById(R.id.school_item_tview_address);
}
}
}
我猜我需要向 searchview 添加一个 QueryTextListener 来更新适配器中的 Query。这会破坏 FirebaseRecyclerAdapter 吗?
还是应该
@Override
public boolean onQueryTextChange(String newText) {
mRecyclerView.setAdapter(new SchoolAdapter(ref.orderByChild("name").startAt(userQuery).endAt(userQuery+"~"))
return false;
}
每当用户键入内容时?
文档还讨论了对 firebase 查询的排序和排序,但没有明确说明进行字符串模式匹配的最佳方法。进行字符串匹配的最佳方法是什么,以便回收器视图显示所有将搜索查询作为数据库记录的子字符串的结果,以及可能还有 1 个编辑距离的结果。
还有一种在查询中忽略大小写的方法?
【问题讨论】:
标签: android firebase firebase-realtime-database