Solución:
En algunos casos, cambiar solo el atributo de visibilidad podría terminar como espacio en blanco asignado (debido al relleno de la vista principal, márgenes, elementos internos, etc.). Luego, cambiar la altura de la vista principal ayuda:
holder.itemView.setVisibility(View.GONE);
holder.itemView.setLayoutParams(new RecyclerView.LayoutParams(0, 0));
Luego, asegúrese de que, en la condición de que sea visible, también configure:
holder.itemView.setVisibility(View.VISIBLE);
holder.itemView.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
Debe hacer eso porque el viewHolder se recicla a medida que se desplaza, si cambia las propiedades como esta y nunca las devuelve a su estado natural, otros elementos ya estarán ocultos en caso de que reutilicen la misma vista.
Debe ocultar todas las vistas o los elementos principales del formato XML de UsersViewholder. Debes ocultar todo el visor o cada vista.
Todo el espectador:
itemView.setVisibility(View.GONE);
o cada elemento:
view.setVisibility(View.GONE);
Pero no olvides configurarlos VISIBLE
De lo contrario, terminarás con algunas cosas extrañas del reciclaje.
SI
view.setVisibility(View.GONE);
te da una vista en blanco
Entonces sigue esto.
public static class Data_ViewHolder extends RecyclerView.ViewHolder {
private final LinearLayout layout;
final LinearLayout.LayoutParams params;
public Show_Chat_ViewHolder(final View itemView) {
super(itemView);
.
.
.
layout =(LinearLayout)itemView.findViewById(R.id.show_item_layout);
params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
.
.
.
}
private void Layout_hide() {
params.height = 0;
//itemView.setLayoutParams(params); //This One.
layout.setLayoutParams(params); //Or This one.
}
}
Ahora llama desde Adaptador
mFirebaseAdapter = new FirebaseRecyclerAdapte......{
public void populateViewHolder.....{
if(model.getData().equals("..Something.."))
{
viewHolder.Layout_hide();
}
else
viewHolder.Person_Email(model.getEmail());
}
}