2012-06-17 3 views
0

현재 저는 휴대 전화에 설치된 모든 응용 프로그램을 나열한 안드로이드 프로젝트를 진행하고 있습니다. 사용자가 클릭하면 패키지 이름을 제공하여 나중에 앱을 시작할 수 있습니다. 지금은 다음 줄에 패키지 이름을 저장하고 있지만 특정 사용자에게 응용 프로그램 이름 만 패키지 이름을 알 필요가 없기 때문에 특정 사용자를 혼동시킬 수 있다고 생각합니다.응용 프로그램 목록에서 응용 프로그램로드

따라서 사용자가 응용 프로그램 이름을 선택할 때 검색 할 수있는 ListView 내에 패키지 이름을 저장할 수있는 방법이 있습니까 (TextView 및 ImageView가있는 사용자 지정 어댑터 사용).

도움을 주셔서 감사합니다.

답변

2

한 가지 방법은 당신이 seTag (Object tag) 또는 setTag(int key, Object tag)TextView 또는 함께이 여분의 정보를 저장하는 데 사용할 수있다 View에서 연장 뉴욕보기 좋아 :

TextView tv = findViewById(R.id.textview); 
tv.setTag(<package_name_string>); 

tv.getTag(); // to get the value. 

다른 방법은 별도의 List에 그 정보를 저장하고이 어댑터를 통해 액세스 할 수 있는지 확인하는 것입니다.

0

따라서, 나는 사용자가 응용 프로그램 이름을 선택했을 때 내가 검색 할 수 있습니다 (텍스트 뷰와 이미지 뷰와 사용자 정의 어댑터를 사용) ListView에 내 패키지 이름을 저장할 수있는 방법이있다.

데이터가 이미 사용자 지정 어댑터에 있습니다. this sample project에서, 당신은 아마도에 ArrayAdapter을 사용하는 List<ResolveInfo> 당신은 queryIntentActivities()에서 돌아 오기 :

그렇다면, 당신은 정보를 얻을 수 (AppAdapter extends ArrayAdapter<ResolveInfo> 경우)

List<ResolveInfo> launchables=pm.queryIntentActivities(main, 0); 

Collections.sort(launchables, new ResolveInfo.DisplayNameComparator(pm)); 

adapter=new AppAdapter(pm, launchables); 

당신이 어댑터에서 응용 프로그램을 실행해야 :

@Override 
    protected void onListItemClick(ListView l, View v, 
           int position, long id) { 
    ResolveInfo launchable=adapter.getItem(position); 
    ActivityInfo activity=launchable.activityInfo; 
    ComponentName name=new ComponentName(activity.applicationInfo.packageName, 
             activity.name); 
    Intent i=new Intent(Intent.ACTION_MAIN); 

    i.addCategory(Intent.CATEGORY_LAUNCHER); 
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | 
       Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 
    i.setComponent(name); 

    startActivity(i);  
    } 
관련 문제