studio recyclerview hacer como activity java android swiperefreshlayout

java - recyclerview - SwipeRefreshLayout dispara programáticamente



swiperefreshlayout recyclerview (4)

¿Hay alguna manera de desencadenar el SwipeRefreshLayout programáticamente? La animación debería comenzar y el método onRefresh de la interfaz OnRefreshListener debería ser llamado.


Para activar SwipeRefreshLayout probé esta solución:

SwipeRefreshLayout.OnRefreshListener swipeRefreshListner = new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { Log.i(TAG, "onRefresh called from SwipeRefreshLayout"); // This method performs the actual data-refresh operation. // The method calls setRefreshing(false) when it''s finished. loadData(); } };

Ahora la parte clave:

swipeLayout.post(new Runnable() { @Override public void run() { swipeLayout.setRefreshing(true); // directly call onRefresh() method swipeRefreshListner.onRefresh(); } });


Puede llamar al método Refresh () programáticamente y luego, dentro del método, iniciar la animación si aún no se ha iniciado. Vea lo siguiente:

@Override public void onRefresh() { if (!mSwipeRefreshLayout.isRefreshing()) mSwipeRefreshLayout.setRefreshing(true); //TODO }


Solo para forzar a agregar este gesto de deslizamiento de dos para habilitar

swipeRefreshLayout.setOnRefreshListener( new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { Log.i(TAG, "onRefresh called from SwipeRefreshLayout"); // This method performs the actual data-refresh operation. // The method calls setRefreshing(false) when it''s finished. FetchData(); } } );


si está utilizando el nuevo swipeRefreshLayout introducido en 5.0

Como la imagen que se muestra arriba, solo necesita agregar la siguiente línea para activar el diseño de actualización de barrido programáticamente

mSwipeRefreshLayout.post(new Runnable() { @Override public void run() { mSwipeRefreshLayout.setRefreshing(true); } });

si simplemente llama

mSwipeRefreshLayout.setRefreshing(true);

no activará el círculo para animar, por lo que al agregar la línea anterior, solo debes demorar el hilo de la interfaz de usuario para que muestre la animación circular dentro del hilo de la interfaz de usuario.

Al llamar a mSwipeRefreshLayout.setRefreshing(true) el OnRefreshListener NO se ejecutará

Para detener la animación de carga circular, llame a mSwipeRefreshLayout.setRefreshing(false)