Ich erstelle eine Widget
mit ListView
darauf. Das Ergebnis der Web Service
in der ListView
Anzeige ist in Ordnung. Ich habe eine Klasse, die meine WidgetService
ist, die sich auf RemoteViewsService
und RemoteViewsFactory
erstreckt. Ich rufe meine , die die Web Service
hat. Ich habe eine Aktualisierungsschaltfläche hinzugefügt, die beim Klicken auf WidgetService
erneut aufgerufen wird, um die Listenansicht zu erstellen.Wie wird die Widget-Listenansicht aktualisiert, wenn auf die Schaltfläche "Aktualisieren" geklickt wird?
Hier ist mein Code in meinem WidgetProvider
public class WidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
final int N = appWidgetIds.length;
for (int i = 0; i < N; ++i) {
RemoteViews remoteViews = updateWidgetListView(context,
appWidgetIds[i]);
appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetIds[i], R.id.listViewWidget);
appWidgetManager.updateAppWidget(appWidgetIds[i], remoteViews);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
private RemoteViews updateWidgetListView(Context context, int appWidgetId) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
R.layout.widget_layout);
//ListView
Intent svcIntent = new Intent(context, WidgetService.class);
svcIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
svcIntent.setData(Uri.parse(svcIntent.toUri(Intent.URI_INTENT_SCHEME)));
remoteViews.setRemoteAdapter(appWidgetId, R.id.listViewWidget, svcIntent);
remoteViews.setEmptyView(R.id.listViewWidget, R.id.empty_view);
//REFRESH
PendingIntent updatePendingIntent = PendingIntent.getService(context, 0, svcIntent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.ivRefreshWidget, updatePendingIntent);
return remoteViews;
}
Wie Sie im Auffrischbeurteilungsteil sehen kann ich PendingIntent
versucht, mit den WidgetService
nennen, aber beim Testen sie die Liste nicht aktualisieren. Vielen Dank für die Hilfe im Voraus.
antwortete ich es schon - http://stackoverflow.com/a/12907825/726863 Auch hier auch - http://stackoverflow.com/a/36005649/726863 –
@LalitPoptani basierend auf den Link Ich sollte einen 'Service' anstelle von' RemoteViewsService' für meinen 'WidgetService' verwenden? – natsumiyu
Auch @LalitPoptani Ich benutze 'notifyAppWidgetViewDataChanged' auf meinem' WidgetProvider' sollte ich es woanders hinlegen? Ich wollte die Aktualisierung auslösen, wenn auf die Schaltfläche geklickt wird. – natsumiyu