我有一個使用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