を使用する appwidget がありますListView
。拡張するクラスを作成しましたRemoteViewsService
:
public class AppWidgetService extends RemoteViewsService {
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {
return (new AppWidgetListFactory(this.getApplicationContext(), intent));
}
}
私AppWidgetProvider
の では、ウィジェットの各インスタンスに対して (各 に対して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);
}
のコンストラクター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);
}
ここでの問題は、fillInList
メソッドがウィジェットのインスタンスと同じくらい頻繁に呼び出されることですが、onGetViewFactory
メソッドが呼び出されるのは 1 回だけです。これにより、すべてのウィジェットに同じデータが表示されます。
どうすればこれを修正できますか?