Autore Topic: Widget con ListView: chiamare onUpdate da onReceive  (Letto 816 volte)

iClaude

  • Visitatore
Widget con ListView: chiamare onUpdate da onReceive
« il: 14 Luglio 2014, 21:16:35 CEST »
0
Sto cercando di creare un widget con all'interno una ListView. Ho seguito la guida ufficiale, adattandola per le ListView:
App Widgets | Android Developers

Il widget si aggiorna quando viene installato la prima volta attraverso il metodo onUpdate, ma poi non si aggiorna quando si lancia un Intent dalla app in seguito a modifiche dei dati. Preciso che il metodo onReceive viene chiamato, ma probabilmente non possa i parametri corretti al metodo onUpdate.
In sostanza mi interessa capire come fare per chiamare correttamente il metodo unUpdate dal metodo onReceive per aggiornare il widtget:

Codice (Java): [Seleziona]
        @Override
        public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
                for(int i=0; i<appWidgetIds.length; i++) {
            RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget_grande);

            Intent intent = new Intent(context, WidgetGrandeService.class);
            intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
            intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));

            rv.setRemoteAdapter(R.id.widget_grande_lvBudget, intent);

            appWidgetManager.updateAppWidget(appWidgetIds[i], rv);
        }
               
                super.onUpdate(context, appWidgetManager, appWidgetIds);
        }

       
        @Override
        public void onReceive(Context context, Intent intent) {        
                if(intent.getAction().equals(WIDGET_AGGIORNA)) {
                    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
                    ComponentName thisAppWidget = new ComponentName(context.getPackageName(), WidgetGrande.class.getName());
                    int[] appWidgetIds = appWidgetManager.getAppWidgetIds(thisAppWidget);
                   
                    onUpdate(context, appWidgetManager, appWidgetIds);
                }
                super.onReceive(context, intent);
        }
       

iClaude

  • Visitatore
Re:Widget con ListView: chiamare onUpdate da onReceive
« Risposta #1 il: 15 Luglio 2014, 23:28:12 CEST »
0
Ok, alla fine sono riuscito al farlo funzionare, ma modificando un bel po' di codice.
Di sicuro seguendo alla lettera la guida ufficiale non avrebbe mai funzionato!  ???