【问题标题】:How to filter FirebaseRecyclerOptions with SearchBar如何使用 SearchBar 过滤 FirebaseRecyclerOptions
【发布时间】:2019-06-12 01:13:42
【问题描述】:

我正在构建一个片段,其中我有一个供用户使用的 searchBar 和一个用于显示它们的 recyclerView。我的问题是每次我输入搜索内容时如何更改 FirebaseRecyclerView 选项,我找到了另一个适配器(不是 FirebaseRecyclerView 适配器)的解决方案,但它使用了 ArrayList。

我想要类似的选项。

//userList contains all users
private void searchUser(String s) {
    ArrayList<User> list = new ArrayList<>();
    for(User object : userList){
        String userName = object.Name + " " + object.Surname;
        if(userName.toLowerCase().contains(s.toLowerCase())){
            list.add(object);
        }
    }
    UserAdapter adapter = new UserAdapter(list);
    myUserList.setAdapter(adapter);
}

每次在搜索栏输入内容时如何刷新选项?

【问题讨论】:

标签: android firebase android-recyclerview


【解决方案1】:

如果您熟悉 firebase recyclerview,那么 firebase recyclerview 会提供该功能

firebase.database().ref(path).orderByChild().startAt('输入的用户名');

startAt() 是这个的关键...你必须在 usermodel 类上调整 searchkey,以便 firebase 的 searchquery 从 datanode 的树中选择指定的搜索词。然后在 firebase recyclerview 中设置

【讨论】:

  • 如何在 FirebaseRecycler 选项中添加这个?我要设置一个新的查询吗?
  • 是的,您需要为每个过滤器请求设置新查询以获取更多详细信息,您可以观看此youtube.com/…
【解决方案2】:

正如@Black Mamba 所说,我确实需要一个查询。我用过这样的东西:

Query query;
    if(!(searchTxt.isEmpty())) {
        query = Ref.orderByChild("Surname").startAt(search).endAt(search + "\uf8ff");
    }
    else{
        query = Ref;
    }

和 setOnQueryTextListener:

if (searchBar != null) {
        searchBar.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                firebaseSearch(newText);
                return true;
            }
        });

firebaseSearch 方法从数据库中检索数据。

【讨论】:

    猜你喜欢
    • 2021-03-30
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多