Search code examples
androidfirebaseandroid-recyclerviewfirebase-realtime-databasefirebaseui

How to hide an item from Recycler View on a particular condition?


I am using Firebase Recycler Adapter (Firebase UI Library) to populate Recycler View. I want to hide an item(row) on a condition. I have a LinearLayout containing a recycler view.

I set linear layout visibility to Gone in populateViewHolder() method of recycler view adapter.

@Override
protected void populateViewHolder(UsersViewHolder viewHolder, User user, int position) {

    if (user.getUserEmail().equals(Utils.decodeEmail(userEmail))) {
        viewHolder.llMain.setVisibility(View.GONE);
        return;
    }

    viewHolder.tvUserEmail.setText(user.getUserEmail());
}

It hides the LinearLayout but the row remains there with empty space.

Is there any method I should override to overcome this or is there any way to achieve the result?


Solution

  • You should hide all views or parent from UsersViewholder layout xml. You should hide entire viewholder or each view

    Entire viewholder:

    itemView.setVisibility(View.GONE);
    

    or each element:

    view.setVisibility(View.GONE);
    

    But don't forget to set them VISIBLE otherwise, you will end up with some strange things from recycling