public class MainActivity extends Activity
{
    private List<ResolveInfo> mApps = null;
    private ArrayList<HashMap<String, Object>> data = null;
    private HashMap<String, Object> hashMap = null;
      
    class ViewHolder
    {
        ImageView viewImg;
        TextView viewName;
    }
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        loadapp();
        setContentView(R.layout.activity_main);
          
        GridView gridView = (GridView) findViewById(R.id.gridView1);
        BaseAdapter adapter = new BaseAdapter()
        {
              
            @Override
            public View getView(int position, View convertView, ViewGroup parent)
            {
                LinearLayout layout;
                ViewHolder holder = new ViewHolder();
                if(convertView == null)
                {
                    LayoutInflater inflater = getLayoutInflater();
                    layout = (LinearLayout) inflater.inflate(R.layout.linelayout, null);
                      
                    holder.viewImg = (ImageView) layout.findViewById(R.id.p_w_picpathView1);
                    holder.viewName = (TextView) layout.findViewById(R.id.textView1);
                    layout.setTag(holder);
                }
                else
                {
                    layout = (LinearLayout) convertView;
                    holder = (ViewHolder) layout.getTag();
                }
                  
                ResolveInfo info = mApps.get(position);
                holder.viewImg.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));
                holder.viewName.setText(info.activityInfo.loadLabel(getPackageManager()).toString());
                return layout;
            }
              
            @Override
            public long getItemId(int position)
            {
                return position;
            }
              
            @Override
            public Object getItem(int position)
            {
                return mApps.get(position);
            }
              
            @Override
            public int getCount()
            {
                return mApps.size();
            }
        };
          
        gridView.setAdapter(adapter);
    }
      
      
    private void loadapp()
    {
        Intent intent = new Intent(Intent.ACTION_MAIN,null);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        mApps = getPackageManager().queryIntentActivities(intent, 0);
    }
      
    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
      
}