Cómo agregar el gesto de deslizar para actualizar a tu app

El patrón "deslizar para actualizar" de la interfaz de usuario se implementa completamente dentro del widget de SwipeRefreshLayout, que detecta el deslizamiento vertical, muestra una barra de progreso distintiva y activa los métodos de llamada en tu app. Para habilitar este comportamiento, agrega el widget a tu archivo de diseño como elemento superior de la ListView o GridView y, luego, implementa el comportamiento de actualización que se invoca cuando el usuario desliza el dedo.

En esta lección, se muestra cómo agregar el widget a un diseño existente. Además, se muestra cómo agregar una acción de actualizar en el área de ampliada de la barra de acciones, de manera que los usuarios que no pueden usar el gesto de deslizar con el dedo puedan activar una actualización manualmente con un dispositivo externo.

Cómo agregar el widget de SwipeRefreshLayout

A fin de agregar el widget de deslizar el dedo para actualizar en una app existente, incluye SwipeRefreshLayout como elemento superior de una ListView o GridView única. Recuerda que el SwipeRefreshLayout solo admite una única ListView o GridView secundaria.

En el siguiente ejemplo, se muestra cómo agregar el widget de SwipeRefreshLayout a un archivo de diseño existente que contiene una ListView:

<android.support.v4.widget.SwipeRefreshLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/swiperefresh"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ListView
            android:id="@android:id/list"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </android.support.v4.widget.SwipeRefreshLayout>

También puedes usar el widget de SwipeRefreshLayout con un ListFragment. Si el diseño contiene una ListView con el ID "@android:id/list", la funcionalidad "deslizar para actualizar" se admitirá automáticamente. Sin embargo, si declaras explícitamente la ListView de esta manera, se sustituirá la estructura de vistas de ListFragment predeterminada. Si quieres usar la estructura de vistas predeterminada, tendrás que anular partes del comportamiento de SwipeRefreshLayout y ListFragment.

Cómo agregar una acción de actualizar en la barra de acciones

Deberías agregar una acción de actualizar a la barra de acciones de tu app a fin de garantizar que los usuarios que no pueden realizar el gesto de deslizar igualmente puedan activar una actualización manual. Por ejemplo, los usuarios con necesidades de accesibilidad pueden activar acciones de la barra de acciones mediante dispositivos externos, como teclados o pads direccionales.

Deberías agregar una acción de actualizar como elemento de menú, en lugar de como botón. Para ello, configura el atributo android:showAsAction=never. Si muestras la acción como botón, los usuarios podrían asumir que la acción del botón para actualizar es diferente de la acción "deslizar para actualizar". Al hacer que la acción de actualizar sea menos evidente en la barra de acciones, puede alentar a los usuarios a que realicen actualizaciones manuales deslizando el dedo y, a su vez, dejar un acceso a la opción en un lugar en el que los usuarios de un pad direccional la buscarían.

En el siguiente código, se muestra cómo agregar la acción de deslizar para actualizar en el área ampliada:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
        <item
            android:id="@+id/menu_refresh"
            android:showAsAction="never"
            android:title="@string/menu_refresh"/>
    </menu>