/**
  * Convert a cursor object from database to a user object
  *
  * @param cursor the result of a query to the database
  * @return the user object
  */
 public static Notification parse(Cursor cursor) {
   Notification notification = new Notification();
   notification.setId(cursor.getInt(0));
   notification.setUserFrom(cursor.getString(0));
   notification.setUserTo(User.parse(cursor));
   notification.setMessage(cursor.getString(1));
   notification.setType(TYPE.fromValue(cursor.getInt(0)));
   return notification;
 }
  /**
   * Convert a json object from rest service to a user object
   *
   * @param token the token got by the rest service
   * @return the user object
   */
  public static Notification parse(JSONObject token) {
    try {
      Notification notification = new Notification();
      notification.setId(token.getInt("id"));
      notification.setUserFrom(token.getString("source"));
      notification.setMessage(token.getString("content"));
      notification.setType(stringToType(token.getString("type")));
      notification.setRead(token.getBoolean("read"));
      return notification;

    } catch (JSONException e) {
      e.printStackTrace();
      return null;
    }
  }
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;
    // Si la vue n'est pas recyclée
    if (convertView == null) {

      // On récupère le layout
      convertView = inflater.inflate(R.layout.item_notification, null);

      holder = new ViewHolder();
      // On place les widgets de notre layout dans le holder
      holder.username = (TextView) convertView.findViewById(R.id.username);
      holder.message = (TextView) convertView.findViewById(R.id.message);
      holder.type = (ImageView) convertView.findViewById(R.id.type);

      // puis on insère le holder en tant que tag dans le layout
      convertView.setTag(holder);

    } else {

      // Si on recycle la vue, on récupère son holder en tag
      holder = (ViewHolder) convertView.getTag();
    }

    // Dans tous les cas, on récupère la notification concerné.
    Notification notification = (Notification) getItem(position);
    // Si cet élément existe vraiment…
    if (notification != null) {
      // On place dans le holder les informations sur la notification.
      holder.username.setText(notification.getUserFrom());
      holder.message.setText(adaptString(notification.getMessage()));
      if (notification.getType().equals(TYPE.INFO)) {
        holder.type.setImageResource(R.drawable.info);
      } else if (notification.getType().equals(TYPE.FUEL)) {
        holder.type.setImageResource(R.drawable.fuel);
      } else if (notification.getType().equals(TYPE.INVITATION)) {
        holder.type.setImageResource(R.drawable.invitation);
      }
    }
    return convertView;
  }