jueves, 26 de marzo de 2015

Swipe para refrescar una Lista en Android

En la siguiente entrada voy a describir el proceso para crear un evento en el cual, mediante un deslizamiento del dedo hacia abajo se va a actualizar una lista.



En primer lugar, debemos añadir la siguiente libreria a nuestro build.gradle

compile 'com.android.support:support-v4:21.0.+'

A continuación preparamos nuestra vista de la siguiente manera, dentro del tag SwipeRefreshLayout introduciremos nuestro ListView



Una vez hecho esto, en nuestra Activity principal que cargue la vista de la List, el método onCreate quedará de la siguiente manera


ListView lv;
    SwipeRefreshLayout mSwipeRefreshLayout;
    Adapter mAdapter;



    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.activity_main_swipe_refresh_layout);

        lv = (ListView) findViewById(R.id.listView);


         ArrayList itemsHoritzontals = obtenerItems();

        ItemHoritzontalAdapter adapter = new ItemHoritzontalAdapter(this, itemsHoritzontals);

        lv.setAdapter(adapter);
        mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                refreshContent();

            }
        });

  }

    private void refreshContent(){

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                
                ArrayList itemsHoritzontals = new ArrayList();
                itemsHoritzontals.add(new ItemHoritzontal("mofa", "drawable/whitebutton", "drawable/whitebutton"));
                itemsHoritzontals.add(new ItemHoritzontal("mofa", "drawable/whitebutton", "drawable/whitebutton"));
                itemsHoritzontals.add(new ItemHoritzontal("mofa", "drawable/whitebutton", "drawable/whitebutton"));
                itemsHoritzontals.add(new ItemHoritzontal("mofa", "drawable/whitebutton", "drawable/whitebutton"));
                itemsHoritzontals.add(new ItemHoritzontal("mofa", "drawable/whitebutton", "drawable/whitebutton"));

                ItemHoritzontalAdapter adapter = new ItemHoritzontalAdapter(ListViewActivity.this, itemsHoritzontals);

                lv.setAdapter(adapter);
                mSwipeRefreshLayout.setRefreshing(false);

            }
        },2000);
}
En primer lugar, tal como se puede apreciar, se carga una lista inicial (la que se verá por primera vez), método obtenerItems(), aqui se puede llenar la array list que luego le pasaremos a la list con lo que queramos. 

A continuación se pone un listener a la variable mSwipeRefreshLayout que contendrá un método con el cual llamaremos a un handler que a su vez contiene un run encargado de refrescar nuestra lista con nuevos items, con la instrucción mSwipeRefreshLayout.setRefreshing(false); le decimos que nos desaparezca el icono de la flecha dando vueltas tan típico de este tipo de refrescos.

No hay comentarios:

Publicar un comentario