Académique Documents
Professionnel Documents
Culture Documents
6 - Affichage - Liste - Items
6 - Affichage - Liste - Items
- Interface 1 - - Interface 2 -
2- L’idée de l’application :
Il s’agit d’une petite application qui permet le calcul de l’indice de masse
corporelle « IMC» et d’y afficher l’historique de tous les calculs réalisées.
Cette application est constituée d’une seule activité dans laquelle il y’a deux
fragments :
• L’écran est occupé par un RecyclerView. C’est une vue spécialisée dans
l’affichage de listes quelconques.
Ajouter cette dépendance dans le fichier build.gradle pour pouvoir
l’utiliser.
implementation "androidx.recyclerview:recyclerview:1.2.1"
• L’ensemble des calculs faits sont stockés dans une liste d’objets
List<ImcDetails> monIMCListe = new ArrayList<>() ;
UNIVERSITE DE CARTHAGE DEPARTEMENT
FACULTE DES SCIENCES DE BIZERTE INFORMATIQUE
Classe : GLSI3 AU : 2021/2022
Matière : Android Studio Semestre : 1
Enseignante : Cherifa Nakkach
Lui rajouter tous les accesseurs (getters) et modificateurs (setters) pour en faire
un JavaBean : objet Java simple (POJO) composé de variables membres privées
initialisées par le constructeur, et d’accesseurs.
<androidx.recyclerview.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/recycler"
android:layout_width="match_parent"
android:layout_height="match_parent" />
✓ 3- Adaptateur et ViewHolders :
alors à l’adaptateur de lui instancier (inflate) les vues pour afficher les
éléments. Le nom « RecyclerView » vient de l’astuce : les vues qui deviennent
invisibles à cause du défilement vertical sont recyclées et renvoyées de l’autre
côté mais en changeant seulement le contenu à afficher.
Pour permettre ce recyclage, il faut que les vues associées à chaque élément
puissent être soit recréées, soit réaffectées. On les appelle des ViewHolders,
parce que ce sont des mini-containers qui regroupent des vues de base (nom
de la planète, etc.).
// ViewHolder
public class MyViewHolder extends RecyclerView.ViewHolder {
private TextView dateTV, timeTV, imcTV,imcStatus;
private ImageView smileIV;
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.imc_item_view, parent, false);
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
// Populate data into the given viewHolder
UNIVERSITE DE CARTHAGE DEPARTEMENT
FACULTE DES SCIENCES DE BIZERTE INFORMATIQUE
Classe : GLSI3 AU : 2021/2022
Matière : Android Studio Semestre : 1
Enseignante : Cherifa Nakkach
holder.dateTV.setText(imc.getDate());
holder.timeTV.setText(imc.getTime());
holder.imcTV.setText(imc.getImcValue());
holder.imcStatus.setText(imc.getImcStatus());
holder.smileIV.setVisibility(View.VISIBLE);
if (Double.parseDouble(imc.getImcValue()) < 18.5) {
holder.smileIV.setImageDrawable(mContext.getResources().getDrawable(R.drawa
ble.worst_smile_value));
} else if (Double.parseDouble(imc.getImcValue()) < 25) {
holder.smileIV.setImageDrawable(mContext.getResources().getDrawable(R.drawa
ble.best_value_smile));
} else if (Double.parseDouble(imc.getImcValue()) < 30) {
holder.smileIV.setImageDrawable(mContext.getResources().getDrawable(R.drawa
ble.emoji));
} else if (Double.parseDouble(imc.getImcValue()) < 35) {
holder.
smileIV.setImageDrawable(mContext.getResources().getDrawable(R.drawable.mid
dle_smile_value));
} else if (Double.parseDouble(imc.getImcValue()) < 40) {
holder.smileIV.setImageDrawable(mContext.getResources().getDrawable(R.drawa
ble.worst_smile_value));
} else {
holder.smileIV.setImageDrawable(mContext.getResources().getDrawable(R.drawa
ble.worst_smile_value));
}
Documentation officielle :
https://developer.android.com/guide/topics/ui/layout/recyclerview
ArrayList<ImcDetails> imcList =
getIMCList(PreferenceManager.IMC_LIST);
historiqueRV.setLayoutManager(mLayoutManager);
historiqueRV.setItemAnimator(new DefaultItemAnimator());
historiqueRV.setAdapter(mAdapter);
@Override
public void onLongClick(View view, int position) {
}
}));
}
UNIVERSITE DE CARTHAGE DEPARTEMENT
FACULTE DES SCIENCES DE BIZERTE INFORMATIQUE
Classe : GLSI3 AU : 2021/2022
Matière : Android Studio Semestre : 1
Enseignante : Cherifa Nakkach