Ще се опитам да направя това кратко. Искам да получа списък browsers
инсталирани на устройството, както и списък с приложения, които да се обработват maps
, напр. Google Карти, MapDroyd. Искам да показвам двата списъка в персонализиран диалогов прозорец и в зависимост от това кой е кликнали, заредете приложението с предоставените координати и съответния URI.
За да заредите браузъра, просто трябва да преминете в a 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 и ако изберат да го видят в приложение за карти, то ще стартира това приложение на посочените координати.
Благодаря за помощта.
Отговори:
1 за отговор № 1ListView изисква ListAdapter. ListAdapter е това, което предоставя данните в ListView. Когато конструирате ListAdapter, един от параметрите на конструктора е масивът от данни.
Ако трябва да актуализирате ListView, след като сте го направиливече сте поставили данните в ListAdapter, за да актуализирате по-рано масива, който сте минали, и след това да се обадите notificationDataSetChanged () на вашия ListAdapter, който можете да получите от ListView.
Ако създавате и двата списъка, преди да създавате списъка си с списъци, след това да комбинирате двата списъка, които можете да направите:
browserList.addAll(mapList);