Esiste un modo per attivare a livello di programmazione SwipeRefreshLayout
? L'animazione dovrebbe iniziare e il metodo onRefresh
dall'interfaccia OnRefreshListener
dovrebbe essere richiamato.Trigger SwipeRefreshLayout a livello di programmazione
risposta
se si utilizza la nuova swipeRefreshLayout intoduced in 5,0
Come l'immagine mostrata sopra è sufficiente aggiungere la seguente riga per attivare il layout di aggiornamento colpo di programmazione
mSwipeRefreshLayout.post(new Runnable() {
@Override
public void run() {
mSwipeRefreshLayout.setRefreshing(true);
}
});
se è sufficiente chiamare
non attiverà il cerchio per animare, quindi aggiungendo la riga sopra u solo effettuare un ritardo nella minaccia dell'interfaccia utente d in modo che mostri l'animazione del cerchio all'interno del thread ui.
Chiamando mSwipeRefreshLayout.setRefreshing(true)
il OnRefreshListener
sarà non si ottiene eseguito
Al fine di fermare il carico circolare di animazione chiamata mSwipeRefreshLayout.setRefreshing(false)
Mi piace come non ci sia menzione di questo nei documenti? Ho avuto problemi infiniti con il segno di caricamento non visualizzato. Si può chiamare '.setRefreshing (false)' dal thread dell'interfaccia utente? – Zapnologica
@Zapnologica: Sì, puoi. Lo chiamo da onPostExecute del mio AsyncTask che è stato attivato in onRefresh(). – AgentKnopf
@Ramz Ho provato il tuo snippet: lo spinner mostra ma a differenza di quanto hai detto, il callback onRefresh implementato dal mio Fragment non viene chiamato quando richiamo manualmente setRefreshing (true) come hai fatto tu (Motorola Moto X 2014 Android 5+). Quindi devo impostare lo spinner per l'aggiornamento e chiamare manualmente il callback onRefresh per eseguire il mio codice di aggiornamento. – AgentKnopf
Per grilletto SwipeRefreshLayout ho provato questa soluzione:
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();
}
};
Ora parte fondamentale:
swipeLayout.post(new Runnable() {
@Override public void run() {
swipeLayout.setRefreshing(true);
// directly call onRefresh() method
swipeRefreshListner.onRefresh();
}
});
Come menzionato in uno dei commenti della risposta precedente da parte di hac.jack, sembra che ci sia un bug con SwipeRefreshLayout. C'è un metodo interno setRefreshing (boolean refreshing, boolean notify) chiamato da setRefreshing (booling refreshing). Il parametro notify è impostato su false per impostazione predefinita, pertanto OnRefreshListener non viene mai aggiornato. Questa risposta è corretta per ottenere l'ascoltatore aggiornato. – Zac
swipeRefreshLayout.setOnRefreshListener ( nuova SwipeRefreshLayout.OnRefreshListener() { @Override pubblico onRefresh void() { Log.i (TAG, "onRefresh chiamato da SwipeRefreshLayout"); // Questo metodo esegue l'attuale tecnica d'aggiornamento operazione // Il metodo chiama setRefreshing (false) al termine. FetchData(); } } ); – Goodlife
Giusto per forzare in aggiungere questo due per ennable gesto di scorrimento
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();
}
}
);
È possibile chiamare il metodo onRefresh() di programmazione e quindi all'interno del metodo avviare l'animazione, se non è già stato avviato. Vedere quanto segue:
@Override
public void onRefresh() {
if (!mSwipeRefreshLayout.isRefreshing()) mSwipeRefreshLayout.setRefreshing(true);
//TODO
}
- 1. Come aprire selezionare a livello di programmazione
- 2. Attivazione schermo a livello di programmazione
- 3. , verificare a livello di programmazione
- 4. Possiamo impostare la distanza dall'indicatore di trigger per SwipeRefreshLayout?
- 5. Come creare un trigger di evento per il controllo a livello di programmazione
- 6. Trigger/Simulate Fare clic su evento a livello di programmazione tramite ClientListerner
- 7. Ordinamento di JTable a livello di programmazione
- 8. Creazione di UIWebView a livello di programmazione
- 9. Creazione di UITableView a livello di programmazione
- 10. Creazione di ListView a livello di programmazione
- 11. creazione di uiview a livello di programmazione?
- 12. Modifica log4net livello di registrazione a livello di programmazione
- 13. Ingrandire un MKMapView a livello di programmazione
- 14. Come nascondere UITabBarController a livello di programmazione?
- 15. Impostazione android: animateLayoutChanges a livello di programmazione
- 16. Impedisce a livello di programmazione della batteria
- 17. Acquisire a livello di programmazione un'area specifica
- 18. Rimuovere il layout a livello di programmazione
- 19. C# crea report a livello di programmazione
- 20. Modifica layout widget a livello di programmazione
- 21. come inviare sms a livello di programmazione?
- 22. Impostare NSWindow Size a livello di programmazione
- 23. Come impostare windowDrawsSystemBarBackgrounds a livello di programmazione?
- 24. Come disabilitare SparkUI a livello di programmazione?
- 25. Passaggio a livello di programmazione rapido swift
- 26. Come configurare ELMAH a livello di programmazione?
- 27. Riavviare l'applicazione a livello di programmazione
- 28. Modifica lingua app a livello di programmazione
- 29. Modifica Info.plista possibile a livello di programmazione?
- 30. Progettazione GUI Qt a livello di programmazione
Bene, questo sembra impossibile. Nel mio caso, devo chiamare 'mSwipeRefreshLayout.setRefreshing (true);' e una nuova istanza del mio AsyncTask quindi eseguirlo manualmente. Naturalmente, li ho inseriti in un metodo chiamato 'doRefresh()' e in 'onRefresh()' chiama 'doRefresh()' –
Possibile duplicato di [Come attivare swiperefreshlayout in Android?] (Http://stackoverflow.com/questions/26513315/how-to-trigger-swiperefreshlayout-in-android) – opticod
@opticod come si fa una domanda prima che il "possibile" duplichi un duplicato? – Niklas