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

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

En esta página, se muestra cómo agregar el widget a un diseño existente. También se muestra cómo agregar una acción de actualización al área ampliada de la barra de acciones para que los usuarios que no pueden usar el gesto de deslizar con el dedo puedan activar una actualización manual con un dispositivo externo.

Agrega la dependencia de SwipeRefreshLayout

Para usar SwipeRefreshLayout en tu app, agrega la siguiente dependencia a tu archivo build.gradle:

Groovy

dependencies {
    implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01"
}

Kotlin

dependencies {
    implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01")
}

Cómo agregar el widget de SwipeRefreshLayout

Para agregar el widget de deslizar el dedo para actualizar a una app existente, incluye SwipeRefreshLayout como elemento superior de una ListView o GridView única. SwipeRefreshLayout solo admite un elemento ListView o GridView secundario.

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

<androidx.swiperefreshlayout.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" />

</androidx.swiperefreshlayout.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, anula partes del comportamiento de SwipeRefreshLayout y ListFragment.

Cómo agregar una acción de actualización a la barra de acciones

Agrega una acción de actualización a la barra de acciones de tu app para que los usuarios que no pueden realizar gestos de deslizamiento puedan activar una actualización manual. Por ejemplo, los usuarios con necesidades de accesibilidad pueden activar acciones de la barra de acciones con dispositivos externos, como teclados o pads direccionales.

Para agregar la acción de actualización como elemento de menú, en lugar de como botón, 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". Hacer que la acción de actualizar sea menos evidente en la barra de acciones alienta 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>