2015-03-03 61 views
0

我的基本Android应用程序显示了我手机上所有安装的应用程序的列表。我已经看过谷歌的教程如何做到这一点,但他们很混乱。我想要一个功能添加到我的行动吧像谷歌对他们的应用程序,所以我可以为一个应用程序如何在我的操作栏中实现搜索?

public class HomeActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_home); 
     setTitle("Apps"); 
     getActionBar(); 
     loadApps(); 
     loadListView(); 
     addClickListener(); 

    } 

    private PackageManager manager; 
    private List<AppDetail> apps; 
    private void loadApps(){ 
     manager = getPackageManager(); 
     apps = new ArrayList<AppDetail>(); 

     Intent i = new Intent(Intent.ACTION_MAIN, null); 
     i.addCategory(Intent.CATEGORY_LAUNCHER); 

     List<ResolveInfo> availableActivities = manager.queryIntentActivities(i, 0); 
     for(ResolveInfo ri:availableActivities){ 
      AppDetail app = new AppDetail(); 
      app.label = ri.loadLabel(manager); 
      app.name = ri.activityInfo.packageName; 
      app.icon = ri.activityInfo.loadIcon(manager); 
      apps.add(app); 
     } 
    } 

    private ListView list; 
    private void loadListView(){ 
     list = (ListView)findViewById(R.id.apps_list); 

     ArrayAdapter<AppDetail> adapter = new ArrayAdapter<AppDetail>(this, 
       R.layout.list_item, 
       apps) { 
      @Override 
      public View getView(int position, View convertView, ViewGroup parent) { 
       if(convertView == null){ 
        convertView = getLayoutInflater().inflate(R.layout.list_item, null); 
       } 

       ImageView appIcon = (ImageView)convertView.findViewById(R.id.item_app_icon); 
       appIcon.setImageDrawable(apps.get(position).icon); 

       TextView appLabel = (TextView)convertView.findViewById(R.id.item_app_label); 
       appLabel.setText(apps.get(position).label); 



       return convertView; 
      } 
     }; 

     list.setAdapter(adapter); 

    } 

    private void addClickListener(){ 
     list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> av, View v, int pos, 
            long id) { 
       Intent i = manager.getLaunchIntentForPackage(apps.get(pos).name.toString()); 
       HomeActivity.this.startActivity(i); 
      } 
     }); 
    } 

} 

回答