@Override
  public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view =
        LayoutInflater.from(parent.getContext())
            .inflate(R.layout.favorites_list_item, parent, false);
    ViewHolder holder = new ViewHolder(view);

    holder.thumbnail.setOnClickListener(
        v -> userAction.showFullScreenImage(favorites.get(holder.getAdapterPosition())));

    return holder;
  }
        @Override
        public void onClick(View v) {
          ViewHolder holder = (ViewHolder) v.getTag();
          //            team.setMonsterOverwrite(holder.getAdapterPosition());
          //            team.save();
          Singleton.getInstance().setMonsterOverwrite(holder.getAdapterPosition());
          if (monsterList.get(holder.getAdapterPosition()).getMonsterId() == 0) {
            ((MainActivity) mContext)
                .switchFragment(
                    MonsterTabLayoutFragment.newInstance(false, 0, holder.getAdapterPosition()),
                    MonsterTabLayoutFragment.TAG,
                    "good");
          } else {
            Parcelable monsterParcel = Parcels.wrap(monsterList.get(holder.getAdapterPosition()));
            ((MainActivity) mContext)
                .switchFragment(
                    MonsterPageFragment.newInstance(
                        monsterList.get(holder.getAdapterPosition()).getMonsterId(),
                        holder.getAdapterPosition(),
                        monsterParcel),
                    MonsterPageFragment.TAG,
                    "good");

            //                ((MainActivity)
            // mContext).switchFragment(MonsterPageFragment.newInstance(realm.copyFromRealm(monsterList.get(holder.getAdapterPosition())), holder.getAdapterPosition()), MonsterPageFragment.TAG, "good");
          }
        }
 @Override
 public boolean onLongClick(View v) {
   ViewHolder holder = (ViewHolder) v.getTag();
   Singleton.getInstance().setMonsterOverwrite(holder.getAdapterPosition());
   //            Intent i = new Intent(mContext, MonsterTabLayoutActivity.class);
   //            Bundle bundle = new Bundle();
   //            bundle.putBoolean("replaceAll", false);
   //            bundle.putLong("replaceMonsterId",
   // monsterList.get(holder.getAdapterPosition()).getMonsterId());
   //            bundle.putInt("monsterPosition", holder.getAdapterPosition());
   //            i.putExtras(bundle);
   //            ((Activity)mContext).startActivityForResult(i, 1);
   ((MainActivity) mContext)
       .switchFragment(
           MonsterTabLayoutFragment.newInstance(
               false,
               monsterList.get(holder.getAdapterPosition()).getMonsterId(),
               holder.getAdapterPosition()),
           MonsterTabLayoutFragment.TAG,
           "good");
   return true;
 }
    /** 设置值 */
    @Override
    public void onBindViewHolder(final ViewHolder holder, final int i) {
      if (currType == TYPE_GRID) {
        holder.tv.setTextSize(px2dp(30f));
      } else {
        holder.tv.setTextSize(px2dp(60f));
      }
      if (currType == TYPE_STAGGERED_H || currType == TYPE_STAGGERED_V) {
        holder.iv.setVisibility(View.VISIBLE);

        double positionHeight = getPositionRatio(holder.getAdapterPosition());
        holder.iv.setHeightRatio(positionHeight);
      } else {
        holder.iv.setVisibility(View.GONE);
      }
    }
  @Override
  public void onBindViewHolder(final ViewHolder holder, int position) {
    List<PublicTransport> fav_list = s.favList;

    holder.pt_image.setImageResource(fav_list.get(position).getPt_image_id());
    holder.pt_type.setText(fav_list.get(position).getPt_type());
    holder.pt_name.setText(fav_list.get(position).getPt_name());
    holder.pt_route.setText(fav_list.get(position).getPt_route());

    // ottengo l'elemento attuale
    final PublicTransport pt = fav_list.get(holder.getAdapterPosition());

    // apro mapActivity cliccando sull'elemento
    holder.itemView.setOnClickListener(
        new View.OnClickListener() {
          @Override
          public void onClick(View v) {
            holder.itemView.setEnabled(false); // imposto la label del mezzo NON cliccabile
            // controllo la connessione ad internet
            if (Connectivity.isConnected((v.getRootView().getContext()))) {
              s.goToFavouritesActivity = true;
              CoordThread ct = new CoordThread(s, v, pt);
              CoordThread.ricezioneCoord = true;
              ct.start();
            } else { // se non è connesso ad internet
              showAlertDialog(
                  v.getContext(), null, v.getContext().getString(R.string.internet_error_message));
            }
          }
        });

    holder.itemView.setOnLongClickListener(
        new View.OnLongClickListener() {
          @Override
          public boolean onLongClick(final View v) {
            AlertDialog.Builder builder =
                new AlertDialog.Builder(v.getContext(), R.style.AppCompatAlertDialogStyleLight);
            builder.setTitle("Eliminare questo preferito?");
            builder.setPositiveButton(
                "OK",
                new DialogInterface.OnClickListener() {

                  public void onClick(DialogInterface dialog, int id) {
                    String snackbarContent;

                    if (removeListItem(holder.getAdapterPosition())) {
                      snackbarContent = "Preferito eliminato";
                    } else snackbarContent = "ERRORE, preferito non eliminato";

                    if (s.favList.size() == 0) { // ultimo preferito rimasto
                      Intent i = new Intent(v.getContext(), HomeActivity.class);
                      Bundle b = new Bundle();
                      b.putString("snackbarContent", snackbarContent);
                      b.putParcelable("SharedData", s);
                      i.putExtra("bundle", b);
                      v.getContext().startActivity(i);
                    } else { // non è l'ultimo preferito
                      Snackbar.make(
                              ((Activity) v.getContext()).findViewById(R.id.activity_favourites),
                              snackbarContent,
                              Snackbar.LENGTH_LONG)
                          .show();
                    }
                  }
                });
            builder.setNegativeButton("ANNULLA", null);
            builder.show();
            return false;
          }
        });

    // mezzo disponibile - non disponibile (pallino verde - rosso)
    if (fav_list.get(position).isPt_enabled())
      holder.pt_enabled.setImageResource(R.drawable.ic_enabled_green); // mezzo disponibile
    else holder.pt_enabled.setImageResource(R.drawable.ic_disabled_red); // mezzo non disponibile*/
  }