package com.pam.codenamehippie.ui.adapter;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import com.pam.codenamehippie.R;
import com.pam.codenamehippie.controleur.ActionReservation;
import com.pam.codenamehippie.modele.AlimentaireModele;
import com.pam.codenamehippie.modele.depot.AlimentaireModeleDepot;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.List;
/**
* Cette classe permet de faire le lien entre les composantes de l'interface utilisateur et
* la source de données afin de relier les données aux vues correctement.
*/
public class MesReservationsAdapter extends BaseAdapter {
private final Context context;
private final AlimentaireModeleDepot depot;
private volatile List<AlimentaireModele> items = new ArrayList<>();
public MesReservationsAdapter(Context context, AlimentaireModeleDepot depot) {
this.context = context;
this.depot = depot;
}
@Override
public int getCount() {
return this.items.size();
}
@Override
public AlimentaireModele getItem(int position) {
return this.items.get(position);
}
@Override
public long getItemId(int position) {
return this.getItem(position).getId();
}
/**
* Méthode pour lier les données aux composantes de l'interface utilisateur.
* Implémentation de {@link android.widget.Adapter#getView(int, View, ViewGroup)}
*
* @return Retourne une instance de {@link View} gonfler de liste_reservations_row.xml
*/
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;
final AlimentaireModele modele = this.getItem(position);
// Affiche un item personnalisé à la liste
if (row == null) {
LayoutInflater inflater =
(LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.liste_reservations_row, parent, false);
}
// Fait afficher l'icône correspondant au bon type alimentaire à côté du texte
String image = modele.getTypeAlimentaire();
ImageView ivResCategorie = (ImageView) row.findViewById(R.id.iv_res_categorie);
switch (image) {
case "Surgelés":
ivResCategorie.setImageResource(R.drawable.map_surgele);
break;
case "Fruits et Légumes":
ivResCategorie.setImageResource(R.drawable.map_fruit_legume);
break;
case "Boulangerie":
ivResCategorie.setImageResource(R.drawable.map_boulangerie);
break;
case "Produits laitiers":
ivResCategorie.setImageResource(R.drawable.map_laitier);
break;
case "Viandes":
ivResCategorie.setImageResource(R.drawable.map_viande);
break;
case "Non Périssable":
ivResCategorie.setImageResource(R.drawable.map_non_perissable);
break;
default:
ivResCategorie.setImageResource(R.drawable.map_non_comestible);
break;
}
Log.i("ITEM_RES", "Count = " + this.items.size());
// Assigner les valeurs nom, description, quantités, unité et ajouter deux ImageButton par
// rangée selon le nombre d'items contenus dans l'ArrayList.
((TextView) row.findViewById(R.id.tv_res_nom_marchandise)).setText(modele.getNom());
((TextView) row.findViewById(R.id.tv_res_description)).setText(modele.getDescription());
((TextView) row.findViewById(R.id.tv_res_qtee_marchandise)).setText(modele.getQuantiteString());
ImageButton ibSupprimerReservation = (ImageButton) row.findViewById(R.id.ib_res_supprimer);
ImageButton ibCollecterReservation = (ImageButton) row.findViewById(R.id.ib_res_collecter);
// Affiche la date de péremption.
if (modele.getDatePeremption() != null) {
DateFormat format = android.text.format.DateFormat.getLongDateFormat(this.context);
String date = format.format(modele.getDatePeremption());
((TextView) row.findViewById(R.id.tv_res_date_marchandise)).setText(date);
} else {
((TextView) row.findViewById(R.id.tv_res_date_marchandise)).setVisibility(View.INVISIBLE);
}
ActionReservation.instancier(ibSupprimerReservation, ibCollecterReservation, modele);
return row;
}
public void setItems(List<AlimentaireModele> items) {
this.items = items;
this.notifyDataSetChanged();
}
}