Ho un appwidget che utilizza ListView
. Ho creato una classe che estende RemoteViewsService
:onGetViewFactory chiamato solo una volta per più widget
public class AppWidgetService extends RemoteViewsService {
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {
return (new AppWidgetListFactory(this.getApplicationContext(), intent));
}
}
Nel mio AppWidgetProvider
, ho chiamare il seguente metodo per ogni istanza del widget (per ogni appWidgetId
):
private static void fillInList(RemoteViews widget, Context context, int appWidgetId) {
Intent intent = new Intent(context, AppWidgetService.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
widget.setRemoteAdapter(R.id.appwidget_listview, intent);
}
Il costruttore del AppWidgetListFactory
public AppWidgetListFactory(Context context, Intent intent) {
this.context = context;
appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
System.out.println("New TVAPWLF for: " + appWidgetId);
trains = WidgetData.getInstance().widgetMap.get(appWidgetId);
}
Ora il problema è che ilIl metodo 210 viene chiamato tutte le volte che ci sono istanze del widget, ma il metodo onGetViewFactory
viene chiamato una sola volta. Ciò si traduce in tutti i widget che mostrano gli stessi dati.
Come posso risolvere questo problema?
potresti aggiungere altro codice? funziona se si rende il metodo 'fillInList' non statico? – Ronnie
Nel mio caso intent.putExtra funziona. Ogni istanza ottengo l'ID del widget necessario corretto. –