我会尽量做这个。
我想获得设备上安装的browsers
列表,以及处理maps
的应用列表,例如Google地图,MapDroyd。我想在自定义对话框中显示这两个列表,并根据单击的列表,使用提供的坐标和相关URI加载应用程序。
要加载浏览器,您只需传入http://
URI,并使用地图应用程序传入geo:lat,lon
。我的问题是,将它们组合到同一个列表中。
到目前为止,这是我的代码:
final PackageManager packageManager = activity.getPackageManager();
//This gets all the browsers
final String browserURI = httpURL+lat+","+lon;
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(browserURI));
final List<ResolveInfo> browserList = packageManager.queryIntentActivities(browserIntent, 0);
// This gets all the Map apps:
final String mapUri = "geo:"+lat+","+lon;
Intent mapIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(mapUri));
final List<ResolveInfo> mapList = packageManager.queryIntentActivities(mapIntent, 0);
所以我这里有browserList
和mapList
,我认为它包含了我要显示的所有应用的列表。问题是如何将它们组合成一个共同的第三个列表。它是否像ListView.add()
或其他东西一样简单?
理想情况下,最后,我希望它能够弹出应用,如果用户点击在浏览器中查看,则会打开http://mysite链接,如果他们选择在一个地图应用程序,然后它将在指定的坐标处启动该应用程序。
感谢您的帮助。
答案 0 :(得分:1)
ListView需要ListAdapter。 ListAdapter是为ListView提供数据的东西。构造ListAdapter时,其中一个构造函数参数是数据数组。
如果您需要在已经将数据放入ListAdapter之后更新ListView,则需要先更新先前传入的数组,然后在ListAdapter上调用notifyDataSetChanged(),您可以从ListView获取该数据。
如果您在创建ListView之前创建两个列表,那么要合并两个列表,您可以这样做:
browserList.addAll(mapList);