Android Widget con ListView que muestra sólo vistas de carga
Estoy intentando implementar un Widget de aplicación de Android con un ListView . Comencé siguiendo la documentación de Google, pero me quedé atascado con una lista de vistas de carga que se muestran en lugar de los elementos normales de la lista. ¿Alguien tiene experiencias con vistas de lista en widgets?
El código es el mismo que en los documentos de Google . Utilizo un ListView en vez de StackView y como fuente de datos utilizo una base de datos (que no es el problema, los datos se obtienen correctamente – lo he intentado devolviendo una vista de elemento de lista normal con datos correctos en lugar de la vista de carga predeterminada)
- RemoteViews (Widget) tiene texto difuso cuando se utiliza un mapa de bits
- Android ¿Cómo setWeight de una RemoteView?
- Notificación para el reproductor de música android
- AppCompat 23.2 utiliza VectorDrawableCompat con RemoteViews (AppWidget) en la API <21
- RemoteView no muestra botones en la notificación personalizada
Buscar en Internet no me ayudó … También probé este tutorial pero tampoco funcionó. Espero que cualquiera me pueda ayudar, gracias de antemano!
Código
WidgetProvider.java
public class WidgetProvider extends AppWidgetProvider { @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { for (int i = 0; i < appWidgetIds.length; i++) { Intent intent = new Intent(context, EventWidgetService.class); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]); intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME))); RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget); rv.setRemoteAdapter(android.R.id.list, intent); rv.setEmptyView(android.R.id.list, R.id.tvEmptyList); appWidgetManager.updateAppWidget(appWidgetIds[i], rv); } super.onUpdate(context, appWidgetManager, appWidgetIds); } }
WidgetService.java
public class EventWidgetService extends RemoteViewsService { @Override public RemoteViewsFactory onGetViewFactory(Intent intent) { return new EventsWidgetListProvider(getApplicationContext(), intent); } }
WidgetListProvider
public class EventsWidgetListProvider implements RemoteViewsFactory { private List<> _entities = new ArrayList<>(); private Context _context; // private int _appWidgetId; public EventsWidgetListProvider(Context context, Intent intent) { _context = context; // _appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); } @Override public void onCreate() { } private void refreshEntities() { // Request data from database _entities = RequestResult; } @Override public RemoteViews getViewAt(int position) { final RemoteViews remoteViews = new RemoteViews(_context.getPackageName(), R.layout.list_row); // Set data to remoteViews [remoteViews.setTextViewText(), remoteViews.setImageViewResource()] return remoteViews; } @Override public int getCount() { return _entities.size(); } @Override public long getItemId(int position) { return position; } @Override public void onDataSetChanged() { refreshEntities(); } @Override public void onDestroy() { } @Override public RemoteViews getLoadingView() { return new RemoteViews(_context.getPackageName(), R.layout.widget_loading); } @Override public int getViewTypeCount() { return 0; } @Override public boolean hasStableIds() { return false; } }
- ¿Cómo crear una notificación con una vista personalizada, pero con una apariencia nativa?
- Notificación de Android con RemoteViews: actividad asociada con el diseño de RemoteViews
- RemoteView y setGravity
- ¿Es seguro confiar en la llamada a onDataSetChanged () después de onCreated () en RemoteViewsFactory de un AppWidget
- RemoteViewsFactory llamado getViewAt cuando el dataset vacío
- Android ListView en el widget onClick no funciona
- Cómo crear ListView con la ayuda de remoteview?
- ¿Cómo utilizar Glide en remoteViews?
Su getViewTypeCount
devuelve 0
. Por la documentación :
Si el adaptador siempre devuelve el mismo tipo de vista para todos los elementos, este método debería devolver 1.
Al devolver 0
, le está diciendo al sistema que no tiene ningún tipo de vista que mostrar.
- El archivo de extensión personalizado no se abre en mi aplicación
- EnterAlwaysCollapsed no devuelve la barra de herramientas al desplazarse hacia abajo