Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让我的android小部件等待我获取内容_Android_Android Widget_Android Appwidget - Fatal编程技术网

如何让我的android小部件等待我获取内容

如何让我的android小部件等待我获取内容,android,android-widget,android-appwidget,Android,Android Widget,Android Appwidget,我正在开发一个android小部件,它从我的api获取内容 我现在使用的是一个自定义函数,它使用onUpdate=>api.getLastItems(MyCallback)中包含的回调 MyWidget提供程序: public void onUpdate(Context _context, AppWidgetManager _appWidgetManager,int[] _appWidgetIds) { api.getLastItems(new requestCallback() {

我正在开发一个android小部件,它从我的api获取内容

我现在使用的是一个自定义函数,它使用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);
}
public void onUpdate(Context\u Context,AppWidgetManager\u AppWidgetManager,int[]\u appWidgetIds){
getLastItems(新的requestCallback(){
@凌驾
公共void onFinish(对象){
ArrayList announcs_titles=(ArrayList)对象;
final int N=widgetId.length;
对于(int i=0;i
因为RemoteViewsService.RemoteViewsFactory使用了一个特殊的函数getViewAt(int position),需要一个位置才能开始工作,所以我使用这种结构让我的小部件等待,直到我的项目数组列表被填满。


这是对的还是有另一种方法?我如何通过clickEvent(我指的是刷新小部件的方法,而不是PendingEvent.getActivity代码)

我通过使用一个自定义函数修复了这个问题:load(),我在WidgetProvider onReceive()中调用它

如果有人需要有关此方法的帮助,请与我联系

@Override
public void onReceive(final Context context, Intent intent) {
// Check if nothing is loading and call function load()

}
private void load(){
... 
//1- fetch content from api and set result to a global variable
//2- Call onUpdate(context, appWidgetManager, appWidgetIds);
}
@Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
//add condition to check is loading is completed and my global variable contains something.
}