Deslizar para actualizar

El despliegue de una lista para indicar una actualización manual se conoce como el gesto Desplazar. Es una característica tan común que esta funcionalidad se ha encapsulado en un solo widget llamado SwipeRefreshLayout. Se hará la demostración de utilizar el widget para agregar la función Actualizar con un ListView. La siguiente captura de pantalla muestra la actualización en acción:

Preparándose

Nuevamente creamos un nuevo proyecto en Android Studio, llamado: SwipeToRefresh. Utilice las opciones predeterminadas de Teléfono y Tableta y seleccione Actividad vacía cuando se le solicite el Tipo de actividad.

Cómo hacerlo

Inicialmente, necesitamos agregar el widget SwipeRefreshLayout y ListView al layout de la actividad, entonces implementaremos el refresh en el código java. Estos son los pasos detallados:

1.Abra activity_main.xml y reemplace el <TextView> existente con el seguimiento:

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

2.Ahora abra MainActivity.java y añada las siguientes variables globales a la clase:

SwipeRefreshLayout mSwipeRefreshLayout;

ListView mListView;

List mArrayList = new ArrayList<>();

private intmRefreshCount=0;

3.Agregue el siguiente método para manejar la actualización:

private voidrefreshList() {

mRefreshCount++;

mArrayList.add("Refresh: " + mRefreshCount);

ListAdapter countryAdapter = new ArrayAdapter<String>(

this, android.R.layout.simple_list_item_1,

mArrayList);

mListView.setAdapter(countryAdapter);

mSwipeRefreshLayout.setRefreshing(false); }

4.Agregue el código siguiente al método onCreate () existente:

mSwipeRefreshLayout = (SwipeRefreshLayout)findViewById(

R.id.swipeRefresh);

mSwipeRefreshLayout.setOnRefreshListener(

new SwipeRefreshLayout.OnRefreshListener() {

@Override

public voidonRefresh() {

refreshList();}

});

mListView = (ListView)findViewById(android.R.id.list);

finalString[] countries = new String[]{"China", "France","Germany", "India", "Russia", "United Kingdom","United States"};

mArrayList = new ArrayList<String>(

Arrays.asList(countries));

ListAdapter countryAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mArrayList);

mListView.setAdapter(countryAdapter);

5.Ejecute la aplicación en un dispositivo o emulador.

Cómo funciona

Encontramos que es similar a la agregación de elementos al ListView cada vez que se llama al método refresh. Los pasos principales para implementar son:

1.Agregue el widget SwipeRefreshLayout.

2.Incluya el ListView dentro de SwipeRefreshLayout.

3.Agregue OnRefreshListener para llamar a su método de actualización.

4.Llame a setRefreshing (false) después de completar su actualización.

Finalmente observamos que El widget hace que agregar Swipe-to-Refresh sea muy fácil!

Hay más

Actualmente se reconoce el gesto Swipe-to-Refresh es una característica común de aplicaciones, siendo así una buena práctica incluir un elemento de menú. Aquí hay un fragmento de XML para el diseño del menú:

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

Indicando la devolución onOptionsItemSelected (). Se actualiza desde el evento de elemento de menú, deseando notificar SwipeRefreshLayout para que pueda refrescar la interfaz de usuario. Con el siguiente codigo indicamos a SwipeRefreshLayout que una actualización está iniciando:

SwipeRefreshLayout.setRefreshing(true);

results matching ""

    No results matching ""