我的应用小部件有多种模式。对于每种模式,我创建了一个RemoteViewsFactory
。为了在不同的模式之间切换,我向AppWidgetProvider
发送一个意图。收到意图后,我创建RemoteViews
并将其传递给AppWidgetManager
的updateAppWidget()
方法。要为集合视图设置RemoteViewsFactory
,我调用RemoteViews
的setRemoteAdapter()
方法:
rv.setRemoteAdapter(appWidgetId, R.id.widget_view_flipper, intent);
R.id.widget_view_flipper
是一个集合视图,intent
用于RemoteViewsService
构建适当的工厂。
编辑:我编辑了问题,因为我找到了最初描述的问题。现在的问题是,当我更改工厂时,新工厂的getViewAt()
被调用,但集合视图中的元素根本不会更新!这是怎么回事?
目前我想到的唯一解决方法是,在工厂替换后延迟调用AppWidgetManager的notifyAppWidgetViewDataChanged,这会导致视图中的元素更新并出现丑陋的闪烁。