2014-11-06 111 views
1

因此,我正在编写一个管理资产集合的Android应用程序。我正在尝试编写一个AppWiget,这个小部件包含两个ListView,一个表示集合的列表,另一个表示当前选定列表中的资产。我为每个ListView创建了一个AppWidgetProvider和两个RemoteViewsService/RemoteViewServicesFactory。Android AppWidget - 在两个ListView之间进行通信

当集合ListView被点击时,它创建一个Bundle并将collection_id传回给Provider。现在在这一点上,我需要在资产ListView上调用notifyAppWidgetViewDataChanged以让它知道刷新,但我也想将这个collection_id传递给它,以便它知道要获取哪些数据(从本地mySql数据库中取出)。

有没有一种机制允许这样做?我能想到或发现的唯一事情就是将当前的collection_id存储在数据库或SharedPreferences中,但看起来有点冒失。有谁知道更优雅的东西?

回答

0

为什么不将id添加到通过点击第一个listview触发的意图?在你的第一个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"); 
相关问题