Archivo de la etiqueta: RecyclerView

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!