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

Prueba hacerlo con Compose
Jetpack Compose es el kit de herramientas de IU recomendado para Android. Obtén información para deslizar el dedo hacia abajo para actualizar en Compose.

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 una 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 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 la dependencia de SwipeRefreshLayout

Para usar SwipeRefreshLayout en tu app, agrega la siguiente dependencia al 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

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. 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:

<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 de predeterminada. Si quieres usar la estructura de vistas predeterminada, anula partes del comportamiento de SwipeRefreshLayout y ListFragment.

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

Agrega una acción de actualizar a la barra de acciones de tu app para que los usuarios que no pueden realizar el gesto de deslizar 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.

Agrega 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, se alienta a los usuarios a que realicen actualizaciones manuales con gestos de deslizamiento 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>