如何使用SearchBar过滤FirebaseRecyclerOptions

时间:2019-06-06 13:12:17

标签: android firebase android-recyclerview

我正在构建一个片段,其中有一个供用户使用的searchBar和一个可显示用户的recyclerView。我的问题是,每次我键入要搜索的内容时,如何更改FirebaseRecyclerView Options,我发现了另一个适配器(不是FirebaseRecyclerView Adapter)的解决方案,但它使用了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);
}

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

2 个答案:

答案 0 :(得分:2)

如果您熟悉Firebase recyclerview,则Firebase recyclerview会提供该功能

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

startAt()是此程序的关键...您必须在usermodel类上调整searchkey,以便firebase的searchquery从datanode的树中选择指定的searcingword。稍后在firebase recyclerview中进行设置

答案 1 :(得分:1)

我确实需要一个查询,如@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方法从数据库中检索数据。