9

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

enter image description here

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.

SAurabh
  • 87
  • 17
k4k4sh1
  • 115
  • 1
  • 10

0 Answers0