@Override
  public View getView(final int position, View convertView, ViewGroup parent) {
    ViewHolder vholder;
    View v = convertView;

    if (categories.size() > 0) {
      if (v == null) {
        v = inflater.inflate(R.layout.grid_row, parent, false);
        vholder = new ViewHolder();
        vholder.image = (ImageView) v.findViewById(R.id.imageView);
        vholder.text = (TextView) v.findViewById(R.id.textView);
        v.setTag(vholder);
      } else {
        vholder = (ViewHolder) v.getTag();
      }

      if (categories.get(position).getLogo() != null)
        vholder.image.setImageBitmap(
            BitmapFactory.decodeByteArray(
                categories.get(position).getLogo(), 0, categories.get(position).getLogo().length));
      else {
        Drawable myIcon = activity.getResources().getDrawable(R.drawable.category_effect);
        if (android.os.Build.VERSION.SDK_INT >= 16) vholder.image.setBackground(myIcon);
        else vholder.image.setBackgroundDrawable(myIcon);
      }

      vholder.text.setText(categories.get(position).getName());

      v.setOnClickListener(
          new View.OnClickListener() {
            @Override
            public void onClick(View v) {

              Intent intent = new Intent(activity, Apps.class);
              intent.putExtra(CATEGORY, categories.get(position).getName());

              ActivityOptionsCompat options =
                  ActivityOptionsCompat.makeScaleUpAnimation(v, 0, 0, v.getWidth(), v.getHeight());
              ActivityCompat.startActivity(activity, intent, options.toBundle());
            }
          });
    }
    return v;
  }