Android-виджет с отображением ListView Загрузка только загрузочных просмотров

Я пытаюсь реализовать виджет Android App с ListView . Я начал, следуя документации Google, но я застрял в списке отображаемых видов загрузки вместо обычных элементов списка. Есть ли у кого-нибудь опыт просмотра списков в виджетах?

Код такой же, как в документах Google . Я использую ListView вместо StackView, а в качестве источника данных я использую базу данных (которая не является проблемой, данные получены правильно – я попытался это, вернув нормальное представление списка элементов с правильными данными вместо стандартного загрузочного представления)

Поиск в Интернете не помог мне … Я также опробовал этот учебник, но он тоже не работал. Надеюсь, кто-нибудь может мне помочь, спасибо заранее!

Код

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; } } 

Ваш getViewTypeCount возвращает 0 . По документации :

Если адаптер всегда возвращает тот же тип представления для всех элементов, этот метод должен возвращать 1.

Вернув 0 , вы сообщаете системе, что у вас нет типов просмотра для отображения.