Adicionar ao app o recurso de deslizar para atualizar

O padrão da interface do usuário "deslizar para atualizar" é implementado inteiramente no widget SwipeRefreshLayout, que detecta o gesto de deslizar vertical, mostra uma barra de progresso distinta e aciona métodos de callback no app. Ative esse comportamento adicionando o widget ao arquivo de layout como o pai de uma ListView ou GridView e implementando o comportamento de atualização que é invocado quando o usuário desliza.

Nesta página, mostramos como adicionar o widget a um layout existente. Ele 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 possam usar o gesto de deslizar possam acionar uma atualização manual com um dispositivo externo.

Adicionar dependência SwipeRefreshLayout

Para usar SwipeRefreshLayout no seu app, adicione a dependência abaixo 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, adicione SwipeRefreshLayout como pai de uma única ListView ou GridView. SwipeRefreshLayout oferece suporte apenas a um único filho ListView ou GridView.

O exemplo abaixo 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 uma ListFragment. Se o layout tiver um ListView com o ID "@android:id/list", a funcionalidade de deslizar para atualizar terá suporte automático. No entanto, declarar explicitamente ListView dessa maneira substitui a estrutura de visualização ListFragment padrão. Se você quiser usar a estrutura de visualização padrão, substitua 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 seu app para que os usuários que não possam gestos de deslizar possam acionar uma atualização manual. Por exemplo, usuários com necessidades de acessibilidade podem acionar ações da 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 a ação for exibida como um botão, os usuários poderão presumir que a ação do botão de atualização é diferente da ação de 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 em que os usuários do botão direcional procuram por ela.

O código a seguir demonstra 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>