我正在开发一个从我的 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 项目被填满。
这是正确的还是有另一种方法?以及如何通过 clickEvent 刷新我的小部件(我的意思是这样做的方式,而不是 PendingIntent.getActivity 代码)