2012-06-17 83 views
0

我目前正在開發一個Android項目,其中列出了安裝在手機上的所有應用程序。當用戶點擊它應該提供包名稱,以便我可以稍後啓動應用程序。目前,我將包名稱存儲在下一行,但我認爲這可能會讓某些用戶感到困惑,因爲他們實際上並不需要知道包名,而只需知道應用程序名。從應用程序列表中加載應用程序

因此,有沒有一種方法可以將包名稱存儲在ListView中(使用帶有TextView和ImageView的自定義適配器),當用戶選擇應用程序名稱時,可以檢索該名稱。

感謝您提供的任何幫助。

回答

2

的一種方法是,你可以使用seTag (Object tag)setTag(int key, Object tag)來存儲這些額外的信息與TextView或這是從View擴展NY觀點一樣:

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

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

另一種方法是,以這些信息存儲在一個單獨的List並確保可以通過適配器進行訪問。

0

因此,有沒有一種方法可以將ListView中的包名稱(使用帶有TextView和ImageView的自定義適配器)存儲在用戶選擇應用程序名稱時可以檢索到的位置。

數據已存在於您的自定義適配器中。作爲this sample project,你可能正在使用一個ArrayAdapterList<ResolveInfo>queryIntentActivities()回來:

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

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

adapter=new AppAdapter(pm, launchables); 

(其中AppAdapter extends ArrayAdapter<ResolveInfo>

如果是這樣,你得到的信息,你需要從適配器啓動應用程序:

@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);  
    } 
相關問題