Tengo un appwidget que usa ListView
. He creado una clase que se extiende RemoteViewsService
:onGetViewFactory solo llamado una vez para varios widgets
public class AppWidgetService extends RemoteViewsService {
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {
return (new AppWidgetListFactory(this.getApplicationContext(), intent));
}
}
En mi AppWidgetProvider
, que invoca el método siguiente para cada instancia del widget (para cada 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);
}
El constructor de la 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);
}
Ahora el problema es que elEl método 210 se llama con la misma frecuencia que hay instancias del widget, pero el método onGetViewFactory
solo se llama una vez. Esto da como resultado que todos los widgets muestren los mismos datos.
¿Cómo puedo solucionar esto?
podrías agregar un poco más de código? ¿Funciona si haces que el método 'fillInList' no sea estático? – Ronnie
En mi caso intent.putExtra funciona. Cada instancia obtengo el id. De widget necesario correcto. –