RemoteViewFactory onDataSetChanged () вызывается только один раз для notifyAppWidgetViewDataChanged () [duplicate]

На этот вопрос уже есть ответ:

onGetViewFactory вызывается только один раз для нескольких виджетов 2 ответа

Я создаю виджет для загрузки списка ингредиентов по рецепту. Моя цель - иметь возможность иметь несколько экземпляров виджета и загружать / обновлять их список ингредиентов (ListView) независимо друг от друга. Я настроил действия по настройке, чтобы пользователь мог выбрать рецепт. После настройки и заполнения remoteViews и создания RemoteAdapter для моего списка ингредиентов метод всегда будет вызывать:

appWidgetManager.updateAppWidget(mAppWidgetId, views);
appWidgetManager.notifyAppWidgetViewDataChanged(mAppWidgetId, R.id.widget_list_view_layout);

updateAppWidget прекрасно обновляет представления, не относящиеся к коллекции, однако у меня есть претензия с notifyAppWidgetViewDataChanged () для моего представления коллекции, списка ингредиентов.

Когда я впервые добавляю виджет на экран (recipeId 4), он загружается правильно и вызывает правильный сервис и фабрику представления для заполнения удаленного списка. Но если я добавлю второй, вот что происходит (или его отсутствие):

D/WidgetUtils: createAppWidgetResult() with appWidgetId: 78, recipeId: 4
D/WidgetUtils: RecipeId of the ingredients passed: 4
D/WidgetRemoteViewService: onGetViewFactory() call received with mRecipeId 4
D/WidgetRemoteViewsFactory: WidgetRemoteViewsFactory() constructed with recipeId: 4
D/WidgetRemoteViewsFactory: onDataSetChanged() called
D/WidgetUtils: createAppWidgetResult() with appWidgetId: 79, recipeId: 1
D/WidgetUtils: RecipeId of the ingredients passed: 1 
D/WidgetUtils: createAppWidgetResult() with appWidgetId: 80, recipeId: 2
D/WidgetUtils: RecipeId of the ingredients passed: 2

Конец журнала

Я ожидал следующего, если идентификатор рецепта равен1

D/WidgetRemoteViewService: onGetViewFactory() call received with mRecipeId **1**
D/WidgetRemoteViewsFactory: WidgetRemoteViewsFactory() constructed with recipeId: **1**
D/WidgetRemoteViewsFactory: onDataSetChanged() called

Но, как вы можете видеть из приведенного выше журнала, после 1 ничего не происходит (в отличие от 4, что является ожидаемым поведением)

UI мудро, у любого впоследствии созданного списка виджета фактически есть компоненты для рецепта 4 (не 1), даже когда деятельность по настройке явно передает идентификатор как 1 ... 2 ... 6..etc.

Достаточно странно Только после того, как я удалю все свои виджеты с домашнего экрана, а затем добавлю ОДИН виджет, например, идентификатор рецепта 1, будет вызван его onDataSetChanged ()?!, И снова, любые последующие виджеты не будут вызываться.

Смотри скриншот Идентификатор рецепта пирога Nutella - 4, а идентификат рецепта пирожных - 1. Сначала добавляется виджет пирога Nutella, ингредиенты для пирога Nutella загружаются правильно. Домовые, добавляются вторыми, и, как вы можете видеть, ингредиенты перенесены с первого, и они являются неправильными.

Испытано на эмуляторе и реальных устройствах> API 21, тот же результат.

Ответы на вопрос(1)

Ваш ответ на вопрос