gpt4 book ai didi

android - RemoteViewFactory onDataSetChanged() 每次 notifyAppWidgetViewDataChanged() 只调用一次

转载 作者:行者123 更新时间:2023-11-29 19:08:12 33 4
gpt4 key购买 nike

<分区>

我正在构建一个小部件来加载每个食谱的配料列表。我的目标是能够拥有多个小部件实例,并独立加载/更新它们的成分列表 (ListView)。我已经为用户设置了一个配置 Activity 来选择食谱。在配置和填充 remoteViews 并为我的成分列表制作 RemoteAdapter 之后,该方法将始终调用:

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

updateAppWidget 很好地更新了非 Collection View ,但是,我对我的 Collection View (成分列表)的 notifyAppWidgetViewDataChanged() 感到不满。

我第一次将小部件添加到屏幕(recipeId 4)时,它正确加载并调用正确的服务和 View 工厂来填充远程 listView。但是如果我添加第二个,会发生以下情况(或没有发生):

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

日志结束

如果食谱 ID 为 1

,我期待以下结果
D/WidgetRemoteViewService: onGetViewFactory() call received with mRecipeId **1**
D/WidgetRemoteViewsFactory: WidgetRemoteViewsFactory() constructed with recipeId: **1**
D/WidgetRemoteViewsFactory: onDataSetChanged() called

但是正如您从上面的日志中看到的那样,在 1 之后没有任何反应(与 4 不同,这是预期的行为)

在 UI 方面,任何随后创建的小部件的 ListView 实际上都包含配方 4(而不是 1)的成分,即使配置 Activity 明确将 id 传递为 1...2...6..等。

足够奇怪了:只有在我从主屏幕上删除所有小部件,然后添加一个小部件(例如食谱 ID 1)之后,它的 onDataSetChanged() 才会被调用?!,然后再次,任何后续的小部件都不会被调用。

查看屏幕截图 Nutella Pie Recipe 的 id 是 4,而 Brownies Recipe 的 id 是 1。首先添加 Nutella Pie 小部件,正确加载 Nutella Pie 的成分。第二个添加布朗尼,如您所见,成分是从第一个中继承下来的,但它们是不正确的。

在模拟器和真实设备上测试 > API 21,结果相同。

enter image description here

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com