Adicionar ao app o recurso de deslizar para atualizar

Experimente trabalhar com o Compose
O Jetpack Compose é o kit de ferramentas de interface recomendado para o Android. Aprenda a usar o recurso "Puxe para atualizar" no Compose.

O padrão de interface do usuário de "deslizar para atualizar" é implementado totalmente no widget SwipeRefreshLayout, que detecta o deslize vertical, exibe uma barra de progresso distinta e aciona métodos de retorno de chamada no app. Para ativar esse comportamento, adicione o widget ao arquivo de layout como pai de um ListView ou GridView e implemente o comportamento de atualização que é invocado quando o usuário desliza.

Esta página mostra como adicionar o widget a um layout existente. Ela também mostra como adicionar uma ação de atualização à área flutuante da barra de ações, para que os usuários que não conseguem usar o gesto de deslizar possam acionar uma atualização manual com um dispositivo externo.

Adicionar a dependência SwipeRefreshLayout

Para usar o SwipeRefreshLayout no app, adicione a seguinte dependência ao arquivo build.gradle:

Groovy

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

Kotlin

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

Adicionar o widget SwipeRefreshLayout

Para adicionar o widget de "deslizar para atualizar" a um app existente, adicione SwipeRefreshLayout como pai de uma única ListView ou GridView. O SwipeRefreshLayout é compatível apenas com um único filho ListView ou GridView.

O exemplo a seguir demonstra como adicionar o widget SwipeRefreshLayout a um arquivo de layout existente que contém um 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>

Você também pode usar o widget SwipeRefreshLayout com um ListFragment. Se o layout contiver um ListView com o ID "@android:id/list", a funcionalidade de "deslizar para atualizar" será automaticamente compatível. No entanto, declarar explicitamente o ListView dessa maneira substitui a estrutura de visualização ListFragment padrão. Se você quiser usar a estrutura de visualização padrão, modifique partes do comportamento SwipeRefreshLayout e ListFragment.

Adicionar uma ação de atualização à barra de ações

Adicione uma ação de atualização à barra de ações do app para que os usuários que não conseguem usar o gesto de deslizar possam acionar uma atualização manual. Por exemplo, usuários com necessidades de acessibilidade podem acionar a barra de ações usando dispositivos externos, como teclados e botões direcionais.

Adicione a ação de atualização como um item de menu, e não como um botão, definindo o atributo android:showAsAction=never. Se você exibir a ação como um botão, os usuários poderão presumir que a ação do botão de atualização é diferente da ação "deslizar para atualizar". Tornar a ação de atualização menos evidente na barra de ações incentiva os usuários a realizar atualizações manuais com gestos de deslizar, mantendo a opção acessível onde os usuários do botão direcional a procuram.

O código a seguir mostra como adicionar a ação de "deslizar para atualizar" na área flutuante:

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