2015-11-07 33 views
1

我想讓圖標運行應用程序並在listView中顯示。 我可以得到應用程序的名稱。我會在清單中顯示的看法,但我 使用下面的代碼 Manager.java如何讓圖標運行應用程序並保存在Array_list中?

public class Manager { 
    //other methods 


    public ArrayList<Drawable> getListApp() 
{ 
    my_packge_name=new ArrayList<String>(); 
    my_packge_icon=new ArrayList<Drawable>(); 

    PackageManager pm = base_context.getPackageManager();; 
    ActivityManager am=(ActivityManager) base_context.getSystemService(Context.ACTIVITY_SERVICE); 
    List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses(); 
    for (int i = 0; i < runningAppProcessInfo.size(); i++) 
    { 
     String s=runningAppProcessInfo.get(i).processName; 
     try { 
     ApplicationInfo ap= pm.getApplicationInfo(s, PackageManager.GET_META_DATA); 

     if(pm.getLaunchIntentForPackage(ap.packageName) != null){ 
      String currAppName = pm.getApplicationLabel(ap).toString(); 
      Drawable icon=pm.getApplicationIcon(ap); 

       my_packge_icon.add(icon); 
      // my_packge_name.add(currAppName); 

      //This app is a non-system app 
} 
    return my_packge_icon; 
} 

List.java

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_manager); 
    list=(ListView)findViewById(R.id.listView1); 

    arr_icons= new ArrayList<Drawable> (new Manager(getBaseContext()).getListApp()); 

    adapter=new Myadapter(getBaseContext()); 
    list.setAdapter(adapter); 

} 

在GetView

if(convertView==null) 
     { 
      Holder=new ViewHolder(); 
      convertView=myInflater.inflate(R.layout.custom_item_listview,null); 
      Holder.title=(TextView)convertView.findViewById(R.id.title); 
      Holder.icon=(ImageView)findViewById(R.id.image_icon); 
      convertView.setTag(Holder); 

     } 
     else 
     Holder=(ViewHolder) convertView.getTag(); 

     Holder.icon.setImageDrawable(arr_icons.get(position)); 

}

錯誤:

Java.lang.NullPointerException..... 

當我正確運行的所有程序的名稱。 但是,當我得到這個錯誤的所有程序圖標。 我不知道爲什麼數組未初始化。

+0

顯示'Myadapter' class code –

回答

1

假設image_icon屬於custom_item_listview.xml

Holder.icon=(ImageView)findViewById(R.id.image_icon); 

是錯誤的。它應該是

Holder.icon=(ImageView)convertView.findViewById(R.id.image_icon); 

像你TextView

+0

是的你說的對。 非常感謝你幫助 – madam

1

Holder.iconnull。嘗試檢查ID。

+0

問題解決。 謝謝 – madam

相關問題