2011-08-30 6 views
0

나는 이것을 짧게하려고 노력할 것입니다. 장치에 설치된 browsers의 목록과 함께 maps을 처리 할 앱 목록 (예 : Google지도, MapDroyd)을 가져오고 싶습니다. 사용자 정의 대화 상자에 두 목록을 모두 표시하고 클릭 한 항목에 따라 제공된 좌표 및 관련 URI로 응용 프로그램을로드하십시오.Android - 인 텐트 필터에서 반환 된 목록 결합

브라우저를로드하려면 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); 

을 그래서 여기 내가 생각 browserListmapList 내가 표시 할 모든 응용 프로그램의 목록을 포함하고 있습니다. 문제는 이들을 공통 제 3의 목록에 결합하는 방법입니다. 그것은 ListView.add() 또는 무엇인가 간단합니까?

이상적으로는 앱을 팝업하고 사용자가 브라우저에서 클릭하여 볼 경우 링크가 열리 며지도 앱에서보기로 선택한 경우 그러면 지정된 좌표에서 해당 앱을 시작합니다.

도움 주셔서 감사합니다.

답변

1

ListView에는 ListAdapter가 필요합니다. ListAdapter는 ListView에 데이터를 제공합니다. ListAdapter를 생성 할 때 생성자 매개 변수 중 하나가 데이터 배열입니다.

이미 ListAdapter에 데이터를 넣은 후에 ListView를 업데이트해야한다면 이전에 전달한 배열을 먼저 업데이트 한 다음 ListAdapter에서 notifyDataSetChanged()를 호출해야합니다.이 ListAdapter는 ListView에서 가져올 수 있습니다 . 당신은 당신이 할 수있는 두 개의 목록을 결합하는 다음의 ListView를 작성하기 전에 두 목록을 작성하는 경우

는 :

browserList.addAll(mapList); 
+0

감사합니다,이 목록을 결합했다. – eoinzy

관련 문제