¿Cómo actualizar la vista de lista de widgets cuando se hace clic en la actualización del botón?
Estoy creando unWidget
conListView
en eso. Mostrar el resultado de laWeb Service
en elListView
está bien. Creé una clase que es miWidgetService
eso se extiende aRemoteViewsService
y enRemoteViewsFactory
Yo llamo a miListViewProvider
que tiene elWeb Service
. Agregué un botón de actualización que al hacer clic llamará alWidgetService
nuevamente para crear la vista de lista.
Aquí está mi código en miWidgetProvider
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;
}
Como puede ver en la parte de actualización, intenté usarPendingIntent
llamar alWidgetService
pero al probarlo no actualiza la lista. Gracias de antemano por la ayuda.