2012-09-13 15 views
8

Ho un widget basato su ListView che funziona bene e si basa su una chiamata al servizio web JSON per popolarsi. Ho un pulsante di aggiornamento che funziona benissimo e costringe a ricaricare dal web. Lo faccio utilizzando una trasmissione personalizzata che chiama quindi onDataSetChanged(), quindi updateAppWidget() in sequenza. Quello che ho trovato è che quando Android aggiorna il widget automaticamente (in base all'intervallo di tempo impostato la mia definizione XML), sembra che venga chiamato solo updateAppWidget(), e la mia funzione onDataSetChanged() non viene mai eseguita, portando a un timestamp aggiornato (che Aggiornamento in ogni chiamata a UpdateAppWidget(), ma dati obsoleti.Widget Android: onDataSetChanged non chiamato da updateAppWidget()

Come posso forzare Android a chiamare o attivare su DataSetChanged() a un determinato intervallo?

+0

Avete mai chiamato 'notifyDataSetChanged()' sulla scheda remota? – Eric

+0

No. Quando lo farei/dovrei farlo? Sembra che il codice di aggiornamento automatico non mi dia una richiamata? – RealCasually

+0

Penso che, in fase di aggiornamento, dovresti avere qualche riferimento al tuo adattatore (non sei sicuro di come lo vuoi salvare), quindi puoi chiamare la notifica su di esso. 'onDataSetChanged()' viene chiamato * dopo * la notifica viene inviata. – Eric

risposta

9

Risulta che avevo bisogno di chiamare AppWidgetManager.notifyAppWidgetViewDataChanged(widgetId, view) all'interno del mio metodo AppWidgetProvider.onUpdate().

Problemi correlati