So onUpdate method calls
remoteViews.setRemoteAdapter(id, R.id.listview, intent)
in order to apply an adapter to the listview in the widget.
<I faced this problem some time ago. This approach with random number helped me too.
Weird, but found a solution. Android seems to be caching the intents you use in your onUpdate method. If you resend what seems to be the same intent, it won't perform as you'd expect.
Solution: have a static iterating integer which you include as a param in the intent extras. It solved the problem for me.
Intent intent = new Intent(context, WidgetService.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, currentWidgetId);
intent.putExtra("random", randomNumber);
randomNumber++;
intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
Oh, Android...
The suggested method unfortunately didn't work for me. What worked is calling
appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetIds, R.id.list_view);
I have a static method in my AppWidgetProvider
class that I call whenever I want to update the widget data. I called this notifyAppWidgetViewDataChanged inside that method and everything worked. Now the widget updates the list data properly.