onGetViewFactory wywołał tylko raz dla wielu widżetów
Mam aplikację, która używaListView
. Stworzyłem klasę, która się rozszerzaRemoteViewsService
:
public class AppWidgetService extends RemoteViewsService {
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {
return (new AppWidgetListFactory(this.getApplicationContext(), intent));
}
}
W moimAppWidgetProvider
, Wywołuję następującą metodę dla każdej instancji widgetu (dla każdegoappWidgetId
):
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);
}
KonstruktorAppWidgetListFactory
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);
}
Teraz problem polega na tym, żefillInList
metoda jest wywoływana tak często, jak istnieją instancje widgetu, aleonGetViewFactory
metoda jest wywoływana tylko raz. Powoduje to, że wszystkie widżety pokazują te same dane.
Jak mogę to naprawić?