I am using the FirebaseRecyclerAdapter
of Firebase-UI. The listing is working properly, but I'm not able to implement the filter in SearchView.
My users database: Firebase Users
private DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("users");
private RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
recyclerView = (RecyclerView) findViewById(R.id.rv);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setHasFixedSize(true);
UserAdapter userAdapter = new UserAdapter(
User.class,
R.layout.user,
UserAdapter.UserViewHolder.class,
reference
);
recyclerView.setAdapter(userAdapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_activity, menu);
MenuItem item = menu.findItem(R.id.search);
searchView = (SearchView) MenuItemCompat.getActionView(item);
searchView.setOnQueryTextListener(this);
}
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
// ???
return true;
}
Edited
I tried this code on onQueryTextSubmit, the filter worked but with strange behavior.
UserAdapter userAdapter = new UserAdapter(
User.class,
R.layout.user,
UserAdapter.UserViewHolder.class,
reference.orderByChild("name").startAt(newText.toUpperCase());
);
recyclerView.setAdapter(userAdapter);
return true;
Is there any way to update the Query of FirebaseRecyclerAdapter? userAdapter.updateQuery() or something like that?
Note
The FirebaseUI adapters for Android don't yet have support for client-side filtering. The request to add this is tracked in this Github issue.