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)