我有一个使用ListView
的appwidget。 我已经创建了一个延伸的类RemoteViewsService
:onGetViewFactory只针对多个窗口小部件调用过一次
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
方法只被调用一次。这会导致所有小部件显示相同的数据。
我该如何解决这个问题?
你能添加更多的代码吗?如果你使'fillInList'方法不是静态的,它会起作用吗? – Ronnie 2012-07-08 16:32:52
在我的情况下intent.putExtra确实有效。每个实例我都会得到正确的必需的小部件ID。 – 2017-03-09 11:31:08