所以,我正在编写一个管理资产集合的Android应用程序。我正在尝试编写AppWiget,使得窗口小部件包含两个ListView,一个表示集合列表,另一个表示当前所选列表中的资产。我创建了一个AppWidgetProvider和两个RemoteViewsService / RemoteViewServicesFactory,每个ListView一个。
单击集合ListView时,它会创建一个Bundle并将collection_id传递回Provider。现在,在这一点上,我需要在资产ListView上调用notifyAppWidgetViewDataChanged让它知道要刷新,但我也想将这个collection_id传递给它,以便它知道要获取什么数据(从本地mySql数据库中)。 / p>
是否有允许这种情况的机制?我唯一能想到或发现的是将当前的collection_id存储在数据库或SharedPreferences中,但它看起来有点像hacky。有谁知道更优雅的东西?
答案 0 :(得分:0)
为什么不将ID添加到第一个列表视图点击触发的意图?在您的第一个RemoteViewServicesFactory
:
Bundle extras = new Bundle();
extras.putInt("ID", id);
Intent fillInIntent = new Intent();
fillInIntent.putExtras(extras);
rv.setOnClickFillInIntent(R.id.widget_item, fillInIntent);
然后在您的第二个RemoteViewServicesFactory
中,您将会这样阅读:
Int id = extras.getInt("ID");