@Override
  public View getView(int position, View convertView, ViewGroup viewGroup) {
    // TODO Auto-generated method stub
    Holder holder = null;
    if (convertView == null) {
      convertView = LayoutInflater.from(context).inflate(R.layout.app_sort_listview_item, null);
      holder = new Holder();
      holder.letterTv = (TextView) convertView.findViewById(R.id.letter_tv);
      holder.appGv = (GridView) convertView.findViewById(R.id.app_gv);
      convertView.setTag(holder);
    } else {
      holder = (Holder) convertView.getTag();
    }

    SortModel sortModel = sortModels.get(position);
    holder.letterTv.setText(sortModel.getSortLetters());

    AppGridViewAdapter adapter = new AppGridViewAdapter(context, sortModel.getApps());
    holder.appGv.setAdapter(adapter);
    // item click event
    holder.appGv.setOnItemClickListener(
        new OnItemClickListener() {

          @Override
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            // TODO Auto-generated method stub
            if (view != null) {
              AppInfo info = (AppInfo) view.getTag(R.id.gridview_item_app);
              Intent intent = new Intent();
              intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
              intent.setComponent(info.getCn());
              context.startActivity(intent);
            }
          }
        });
    // item long click event
    holder.appGv.setOnItemLongClickListener(
        new OnItemLongClickListener() {

          @Override
          public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            if (view != null) {
              AppInfo info = (AppInfo) view.getTag(R.id.gridview_item_app);
              AppManager.showInstalledAppDetails(context, info.getCn().getPackageName());
            }
            return true;
          }
        });
    return convertView;
  }