APIからコンテンツを取得するAndroidウィジェットに取り組んでいます。
私が今使っているのは、onUpdate => api.getLastItems(MyCallback) に含まれるコールバックを使用するカスタム関数です。
MyWidget プロバイダー:
public void onUpdate(Context _context, AppWidgetManager _appWidgetManager,int[] _appWidgetIds) {
api.getLastItems(new requestCallback() {
@Override
public void onFinish(Object object) {
ArrayList<String> announcs_titles = (ArrayList<String>)object;
final int N = widgetId.length;
for (int i = 0; i < N; i++) {
Intent myIntent = new Intent(context, WidgetService.class);
myIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,widgetId[i]);
myIntent.putStringArrayListExtra("itemsTitles",items_titles);
...
appWidgetManager.updateAppWidget(widgetId[i], widget);
}
}
});
super.onUpdate(context, appWidgetManager, widgetId);
}
RemoteViewsService.RemoteViewsFactory は、作業を開始する位置を必要とする特別な関数 getViewAt(int position) を使用するため、この種の構造を使用して、項目の ArrayList がいっぱいになるまでウィジェットを待機させました。
そうですか、それとも別の方法がありますか?そして、どのようにクリックイベントでウィジェットを更新できますか (PendingIntent.getActivity コードではなく、それを行う方法を意味します)