title: Android - How to filter the RecyclerView of Firebase?
body: <p>I've recently added a searchBar to my Android Firebase app, but I really can't find how to filter data in my app. I need to search in "title", "desc" and "username" childs, as seen in the 
  <a href="https://i.stack.imgur.com/zYJg7.png" rel="nofollow noreferrer">photo.</a></p>
  
  <p>What should I do? Thanks</p>
  
  <p>[Random letters hsiukhdufhjwrepjèijgitrjwbnrtnbnbeènbèrnbgnèjwtigogjwitjgbniownttngfnwnpnwpjgnjntwjtngjnjwngjggpnwrjgrngjwpnjnvwpjeenjrvnjpreqngjnpwjgnrjpwnjpn2ngj2nrjnp2r2g2hhuheqdhyg1eydgugf]</p>
  
  <hr>
  
  <p>updated code of MainActivity:</p>
  
  <pre><code>public class MainActivity extends AppCompatActivity{
  
  private RecyclerView mBlogList;
  
  private DatabaseReference mDatabase;
  
  private DatabaseReference mDatabaseUsers;
  
  private DatabaseReference mDatabaseLike;
  
  private Query mQuery;
  
  private SearchView mSearchView;
  
  private FirebaseAuth mAuth;
  private FirebaseAuth.AuthStateListener mAuthListener;
  
  private boolean mProcessLike = false;
  
  private TextView badge;
  
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
  
      mAuth = FirebaseAuth.getInstance();
      mAuthListener = new FirebaseAuth.AuthStateListener() {
          @Override
          public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
  
              if(firebaseAuth.getCurrentUser() == null){
  
  
                  Intent loginIntent = new Intent(MainActivity.this, LoginActivity.class);
                  loginIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                  startActivity(loginIntent);
  
              }
  
          }
      };
  
  
      mDatabase = FirebaseDatabase.getInstance().getReference().child("Blog");
      mDatabaseUsers = FirebaseDatabase.getInstance().getReference().child("Users");
      mDatabaseLike = FirebaseDatabase.getInstance().getReference().child("Likes");
  
      mDatabaseUsers.keepSynced(true);
      mDatabaseLike.keepSynced(true);
      mDatabase.keepSynced(true);
  
      mBlogList = (RecyclerView) findViewById(R.id.blog_list);
  
      LinearLayoutManager layoutManager = new LinearLayoutManager(this);
      layoutManager.setReverseLayout(true);
      layoutManager.setStackFromEnd(true);
  
      mBlogList.setHasFixedSize(true);
      mBlogList.setLayoutManager(new LinearLayoutManager(this));
  
      badge = (TextView)findViewById ( R.id.badge );
  
      }
  
  @Override
  protected void onStart() {
      super.onStart();
  
      mAuth.addAuthStateListener(mAuthListener);
  
      final FirebaseRecyclerAdapter&lt;Blog, BlogViewHolder&gt; firebaseRecyclerAdapter = new FirebaseRecyclerAdapter&lt;Blog, BlogViewHolder&gt;(
              Blog.class,
              R.layout.blog_row,
              BlogViewHolder.class,
              mQuery
  
      ) {
          @Override
          protected void populateViewHolder(final BlogViewHolder viewHolder, Blog model, int position) {
  
              final String post_key = getRef(position).getKey();
  
              viewHolder.setTitle(model.getTitle());
              viewHolder.setDesc(model.getDesc());
              viewHolder.setImage(getApplicationContext(), model.getImage());
              viewHolder.setUsername(model.getUsername());
  
              viewHolder.setLikeBtn(post_key);
  
              viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View view) {
  
                      Intent singleBlogIntent = new Intent(MainActivity.this, BlogSingleActivity.class);
                      singleBlogIntent.putExtra("blog_id", post_key);
                      startActivity(singleBlogIntent);
  
                  }
              });
  
              mDatabaseUsers.child(model.getUid()).child("image").addValueEventListener(new ValueEventListener() {
                  @Override
                  public void onDataChange(DataSnapshot dataSnapshot) {
                      String imageUrl = dataSnapshot.getValue().toString();
                      viewHolder.setUserimage(getApplicationContext(), imageUrl);
                  }
  
                  @Override
                  public void onCancelled(DatabaseError databaseError) {
  
                  }
              });
  
  
              viewHolder.mLikeBtn.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View view) {
  
                      mProcessLike = true;
  
                      mDatabaseLike.addValueEventListener(new ValueEventListener() {
                          @Override
                          public void onDataChange(DataSnapshot dataSnapshot) {
  
                              if (mProcessLike) {
  
                                  if (dataSnapshot.child(post_key).hasChild(mAuth.getCurrentUser().getUid())) {
  
                                      mDatabaseLike.child(post_key).child(mAuth.getCurrentUser().getUid()).removeValue();
  
                                      mProcessLike = false;
  
                                  } else {
  
                                      mDatabaseLike.child(post_key).child(mAuth.getCurrentUser().getUid()).setValue("RandomValue");
  
                                      mProcessLike = false;
  
                                  }
                              }
                          }
  
                          @Override
                          public void onCancelled(DatabaseError databaseError) {
  
                          }
                      });
                  }
              });
          }
      };
  
      mBlogList.setAdapter(firebaseRecyclerAdapter);
  }
  
  private void checkUserExist() {
      final String user_id = this.mAuth.getCurrentUser().getUid();
      this.mDatabaseUsers.addValueEventListener(new ValueEventListener() {
          public void onDataChange(DataSnapshot dataSnapshot) {
              if (!dataSnapshot.hasChild(user_id)) {
                  Intent setupIntent = new Intent(MainActivity.this, SetupActivity.class);
                  setupIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                  startActivity(setupIntent);
                  MainActivity.this.startActivity(setupIntent);
              }
  
              if (user_id == null){Intent errorIntent = new Intent (MainActivity.this, ErrorActivity.class);
                  errorIntent.addFlags ( Intent.FLAG_ACTIVITY_CLEAR_TOP );
                  startActivity(errorIntent);
                  MainActivity.this.startActivity (errorIntent);
              }}
  
          public void onCancelled(DatabaseError databaseError) {
          }
      });
  }
  
  
  public static class BlogViewHolder extends RecyclerView.ViewHolder{
  
      View mView;
  
      ImageButton mLikeBtn;
  
      DatabaseReference mDatabaseLike;
      FirebaseAuth mAuth;
  
      public BlogViewHolder(View itemView) {
          super(itemView);
  
          mView = itemView;
  
          mLikeBtn = (ImageButton) mView.findViewById(R.id.like_btn);
  
          mDatabaseLike = FirebaseDatabase.getInstance().getReference().child("Likes");
          mAuth = FirebaseAuth.getInstance();
  
          mDatabaseLike.keepSynced(true);
  
  
  
  
      }
  
      public void setUserimage(Context context, String imageUrl) {
          ImageView imageViewPostUserImage = (ImageView) mView.findViewById(R.id.imageview_post_userimage);
          Glide
                  .with(context)
                  .load(imageUrl)
                  .into(imageViewPostUserImage);
      }
  
      public void setLikeBtn(final String post_key) {
  
          mDatabaseLike.addValueEventListener(new ValueEventListener() {
              @Override
              public void onDataChange(DataSnapshot dataSnapshot) {
  
                  if (dataSnapshot.child(post_key).hasChild(mAuth.getCurrentUser().getUid())) {
  
                      mLikeBtn.setImageResource(R.mipmap.ic_thumb_up_black_24dp);
  
                  } else {
  
                      mLikeBtn.setImageResource(R.mipmap.ic_thumb_up_white_24dp);
  
                  }
              }
  
              @Override
              public void onCancelled(DatabaseError databaseError) {
  
              }
          });
  
      }
  
  
  
      public void setTitle(String title){
  
          TextView post_title = (TextView) mView.findViewById(R.id.post_title);
          post_title.setText(title);
      }
  
      public void setDesc(String desc){
  
          TextView post_desc = (TextView) mView.findViewById(R.id.post_desc);
          post_desc.setText(desc);
  
      }
  
      public void setUsername(String username){
  
          TextView post_username = (TextView) mView.findViewById(R.id.post_username);
          post_username.setText(username);
  
      }
  
      public void setImage(Context ctx, String image){
  
          ImageView post_image = (ImageView) mView.findViewById(R.id.post_image);
          Picasso.with(ctx).load(image).into(post_image);
      }
  
  
  
  }
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
  
      getMenuInflater().inflate(R.menu.main_menu, menu);
  
      SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
  
      searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
          @Override
          public boolean onQueryTextSubmit(String query) {
  
              Intent searchIntent = new Intent(MainActivity.this, searchActivity.class);
              searchIntent.putExtra("search", query);
              startActivity(searchIntent);
              return false;
  
          }
  
          @Override
          public boolean onQueryTextChange(String newText) {
              //??????
              return true;
          }
      });
  
      return super.onCreateOptionsMenu(menu);
  
  
  
  }
  
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
  
      if(item.getItemId() == R.id.action_add){
  
          startActivity(new Intent(MainActivity.this, PostActivity.class));
  
      }
  
      if (item.getItemId() == R.id.action_logout){
  
          logout();
  
      }
  
      return super.onOptionsItemSelected(item);
  }
  
  private void logout() {
  
      mAuth.signOut();
  
  }
  </code></pre>
  
  <p>}</p>
  
  <hr>
  
  <p>searchActivity</p>
  
  <pre><code>public class searchActivity extends AppCompatActivity{
  
  private RecyclerView mBlogList;
  
  private DatabaseReference mDatabase;
  
  private DatabaseReference mDatabaseUsers;
  
  private DatabaseReference mDatabaseLike;
  
  private Query mQuery;
  
  private Query mQuerySearch;
  
  private SearchView mSearchView;
  
  private FirebaseAuth mAuth;
  private FirebaseAuth.AuthStateListener mAuthListener;
  
  private boolean mProcessLike = false;
  
  private TextView badge;
  
  private String search;
  
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
  
      mAuth = FirebaseAuth.getInstance();
      mAuthListener = new FirebaseAuth.AuthStateListener() {
          @Override
          public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
  
              if(firebaseAuth.getCurrentUser() == null){
  
  
                  Intent loginIntent = new Intent( com.fgvelectro.f.searchActivity.this, LoginActivity.class);
                  loginIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                  startActivity(loginIntent);
  
              }
  
          }
      };
  
  
      mDatabase = FirebaseDatabase.getInstance().getReference().child("Blog");
      search = getIntent().getExtras().getString("search");
      mQuerySearch = mDatabase.orderByChild("title").equalTo(search);
      mAuth.addAuthStateListener(mAuthListener);
  
      mDatabaseUsers = FirebaseDatabase.getInstance().getReference().child("Users");
      mDatabaseLike = FirebaseDatabase.getInstance().getReference().child("Likes");
  
      mDatabaseUsers.keepSynced(true);
      mDatabaseLike.keepSynced(true);
      mDatabase.keepSynced(true);
  
      mQuery = mDatabase.orderByChild("title").equalTo("try1");
  
      mBlogList = (RecyclerView) findViewById(R.id.blog_list);
  
      LinearLayoutManager layoutManager = new LinearLayoutManager(this);
      layoutManager.setReverseLayout(true);
      layoutManager.setStackFromEnd(true);
  
      mBlogList.setHasFixedSize(true);
      mBlogList.setLayoutManager(new LinearLayoutManager(this));
  
      badge = (TextView)findViewById ( R.id.badge );
  
  }
  
  @Override
  protected void onStart() {
      super.onStart();
  
      FirebaseRecyclerAdapter&lt;Blog, searchActivity.BlogViewHolder&gt; firebaseRecyclerAdapter = new FirebaseRecyclerAdapter&lt;Blog, BlogViewHolder&gt;(
  
              Blog.class,
              R.layout.blog_row,
              searchActivity.BlogViewHolder.class,
              mQuerySearch
  
      ) {
          @Override
          protected void populateViewHolder(BlogViewHolder viewHolder, Blog model, int position) {
  
          }
  
          protected void populateViewHolder(final com.fgvelectro.f.MainActivity.BlogViewHolder viewHolder, Blog model, int position) {
  
              final String post_key = getRef(position).getKey();
  
              viewHolder.setTitle(model.getTitle());
              viewHolder.setDesc(model.getDesc());
              viewHolder.setImage(getApplicationContext(), model.getImage());
              viewHolder.setUsername(model.getUsername());
  
              viewHolder.setLikeBtn(post_key);
  
              viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View view) {
  
                      Intent singleBlogIntent = new Intent( com.fgvelectro.f.searchActivity.this, BlogSingleActivity.class);
                      singleBlogIntent.putExtra("blog_id", post_key);
                      startActivity(singleBlogIntent);
  
                  }
              });
  
              mDatabaseUsers.child(model.getUid()).child("image").addValueEventListener(new ValueEventListener() {
                  @Override
                  public void onDataChange(DataSnapshot dataSnapshot) {
                      String imageUrl = dataSnapshot.getValue().toString();
                      viewHolder.setUserimage(getApplicationContext(), imageUrl);
                  }
  
                  @Override
                  public void onCancelled(DatabaseError databaseError) {
  
                  }
              });
  
  
              viewHolder.mLikeBtn.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View view) {
  
                      mProcessLike = true;
  
                      mDatabaseLike.addValueEventListener(new ValueEventListener() {
                          @Override
                          public void onDataChange(DataSnapshot dataSnapshot) {
  
                              if (mProcessLike) {
  
                                  if (dataSnapshot.child(post_key).hasChild(mAuth.getCurrentUser().getUid())) {
  
                                      mDatabaseLike.child(post_key).child(mAuth.getCurrentUser().getUid()).removeValue();
  
                                      mProcessLike = false;
  
                                  } else {
  
                                      mDatabaseLike.child(post_key).child(mAuth.getCurrentUser().getUid()).setValue("RandomValue");
  
                                      mProcessLike = false;
  
                                  }
                              }
                          }
  
                          @Override
                          public void onCancelled(DatabaseError databaseError) {
  
                          }
                      });
                  }
              });
          }
      };
  
      mBlogList.setAdapter(firebaseRecyclerAdapter);
  }
  
  private void checkUserExist() {
      final String user_id = this.mAuth.getCurrentUser().getUid();
      this.mDatabaseUsers.addValueEventListener(new ValueEventListener() {
          public void onDataChange(DataSnapshot dataSnapshot) {
              if (!dataSnapshot.hasChild(user_id)) {
                  Intent setupIntent = new Intent( com.fgvelectro.f.searchActivity.this, SetupActivity.class);
                  setupIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                  startActivity(setupIntent);
                  com.fgvelectro.f.searchActivity.this.startActivity(setupIntent);
              }
  
              if (user_id == null){Intent errorIntent = new Intent ( com.fgvelectro.f.searchActivity.this, ErrorActivity.class);
                  errorIntent.addFlags ( Intent.FLAG_ACTIVITY_CLEAR_TOP );
                  startActivity(errorIntent);
                  com.fgvelectro.f.searchActivity.this.startActivity (errorIntent);
              }}
  
          public void onCancelled(DatabaseError databaseError) {
          }
      });
  }
  
  
  public static class BlogViewHolder extends RecyclerView.ViewHolder{
  
      View mView;
  
      ImageButton mLikeBtn;
  
      DatabaseReference mDatabaseLike;
      FirebaseAuth mAuth;
  
      public BlogViewHolder(View itemView) {
          super(itemView);
  
          mView = itemView;
  
          mLikeBtn = (ImageButton) mView.findViewById(R.id.like_btn);
  
          mDatabaseLike = FirebaseDatabase.getInstance().getReference().child("Likes");
          mAuth = FirebaseAuth.getInstance();
  
          mDatabaseLike.keepSynced(true);
  
  
  
  
      }
  
      public void setUserimage(Context context, String imageUrl) {
          ImageView imageViewPostUserImage = (ImageView) mView.findViewById(R.id.imageview_post_userimage);
          Glide
                  .with(context)
                  .load(imageUrl)
                  .into(imageViewPostUserImage);
      }
  
      public void setLikeBtn(final String post_key) {
  
          mDatabaseLike.addValueEventListener(new ValueEventListener() {
              @Override
              public void onDataChange(DataSnapshot dataSnapshot) {
  
                  if (dataSnapshot.child(post_key).hasChild(mAuth.getCurrentUser().getUid())) {
  
                      mLikeBtn.setImageResource(R.mipmap.ic_thumb_up_black_24dp);
  
                  } else {
  
                      mLikeBtn.setImageResource(R.mipmap.ic_thumb_up_white_24dp);
  
                  }
              }
  
              @Override
              public void onCancelled(DatabaseError databaseError) {
  
              }
          });
  
      }
  
  
  
      public void setTitle(String title){
  
          TextView post_title = (TextView) mView.findViewById(R.id.post_title);
          post_title.setText(title);
      }
  
      public void setDesc(String desc){
  
          TextView post_desc = (TextView) mView.findViewById(R.id.post_desc);
          post_desc.setText(desc);
  
      }
  
      public void setUsername(String username){
  
          TextView post_username = (TextView) mView.findViewById(R.id.post_username);
          post_username.setText(username);
  
      }
  
      public void setImage(Context ctx, String image){
  
          ImageView post_image = (ImageView) mView.findViewById(R.id.post_image);
          Picasso.with(ctx).load(image).into(post_image);
      }
  
  
  
  }
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
  
      getMenuInflater().inflate(R.menu.main_menu, menu);
  
      SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
  
      searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
          @Override
          public boolean onQueryTextSubmit(String query) {
  
              Intent searchIntent = new Intent( com.fgvelectro.f.searchActivity.this, searchActivity.class);
              searchIntent.putExtra("search", query);
              startActivity(searchIntent);
              return false;
  
          }
  
          @Override
          public boolean onQueryTextChange(String newText) {
              //??????
              return true;
          }
      });
  
      return super.onCreateOptionsMenu(menu);
  
  
  
  }
  
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
  
      if(item.getItemId() == R.id.action_add){
  
          startActivity(new Intent( com.fgvelectro.f.searchActivity.this, PostActivity.class));
  
      }
  
      if (item.getItemId() == R.id.action_logout){
  
          logout();
  
      }
  
      return super.onOptionsItemSelected(item);
  }
  
  private void logout() {
  
      mAuth.signOut();
  
  }
  </code></pre>
  
  <p>}
  Photo: <a href="https://i.stack.imgur.com/nTL9d.png" rel="nofollow noreferrer">Of the error</a></p>