Vista para nuestras listas vacías en Android

Durante mi vida como desarrollador Android, he visto las formas más ingeniosas de mostrar vistas cuando una lista (ListView o RecyclerView) están vacías; desde frames ocultos en el layout, listas que empujan otros view con match_parent, entre otros.
Por suerte para estos males y otros, desde la versión del API 1, existe la función setEmptyView que recibe como parámetro un objeto View, que será mostrada cuando la el listView no contenga elementos.

View emptyView = getLayoutInflater().inflate(R.layout.empty_view, null);
ListView listView = (ListView)findViewById(R.id.listView);
listView.setEmptyView(emptyView);

Ahora respecto a los RecyclerView, en la documentación oficial no encontré una forma tan simple para poder resolverlo, por lo que hay que volver a las viejas andanzas y utilizar los famosos setVisibility en un frame que cubra toda la pantalla.
FrameLayout emptyView = (FrameLayout)findViewById(R.layout.empty_view);
MyRecyclerAdapter listAdapter = new MyRecyclerAdapter(listItems);
listAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
  @Override
  public void onChanged() {
    super.onChanged();
    if (listAdapter.getItemCount() == 0) {
      emptyView.setVisibility(View.VISIBLE);
    } else {
      emptyView.setVisibility(View.GONE);
    }
  }
});

Si conocen una forma mejor de poder mostrar una vista en un RecyclerView vacío, por favor compártanla para mejorar el tip.
Gracias!

Agregar un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *