Le but de cet exercice est de réaliser une application de pense-bête.
Il sera possible d'afficher l'ensemble de ses pense-bêtes avec leurs dates de création associées.
Pour t'aider dans ta tâche, tu peux utiliser cette ressource jusqu'à la section "Attaching the Adapter to a ListView" comprise : https://guides.codepath.com/android/Using-an-ArrayAdapter-with-ListView
-
Initialise une projet Android avec un
MainActivity
vide, et remplace le.gitignore
du projet avec ce contenu : https://www.gitignore.io/api/androidstudio -
Ouvre le fichier gradle pour passer en version 27 et modifier la version de la bibliothèque appcompat en 27.1.1
-
Ajoute une
ListView
avec l'identifiantlist_reminder
, dansactivity_main.xml
. -
Modifie la
ListView
pour qu'elle prenne toute la page. -
Crée le layout
item_note.xml
d'une note, qui contiendra uneTextView
avec l'identifianttv_reminder
et uneTextView
avec l'identifianttv_creation_date
. -
Attention : l'élément principal de
item_note.xml
doit avoir sa hauteur enwrap_content
(sinon une ligne de la liste prendra toute la hauteur de la page).
- Crée la classe objet
ReminderModel
qui contiendra les attributs :
- reminder (String)
- creationDate (String) // pas besoin d'utiliser le type Date pour cet exercice !
- Ajoute un constructeur permettant d'initialiser ces attributs, ainsi que les getters et setters utiles
-
Dans
MainActivity
, crée uneArrayList
deReminderModel
vide -
Ajoute dans cette
ArrayList
des instances deReminderModel
que tu auras créé grâce à son constructeur, par exemple :
ArrayList<ReminderModel> reminders = new ArrayList<>();
reminders.add(new ReminderModel("Numéro de téléphone de jack : 06.14.85.47.25", "2018-09-24"));
reminders.add(new ReminderModel("Taille du bureau : 150x200", "2018-09-26"));
- Créer une classe
ReminderAdapter
contenant le code suivant :
public class ReminderAdapter extends ArrayAdapter<ReminderModel> {
public ReminderAdapter(Context context, List<ReminderModel> reminders) {
super(context, 0, reminders);
}
@NonNull
@Override
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
// Get the data item for this position
ReminderModel reminder = getItem(position);
// Check if an existing view is being reused, otherwise inflate the view
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_reminder, parent, false);
}
TextView tvReminder = convertView.findViewById(R.id.tv_reminder);
TextView tvCreationDate = convertView.findViewById(R.id.tv_creation_date);
// Populate the data from the object into the template view
tvReminder.setText(reminder.getReminder());
tvCreationDate.setText(reminder.getCreateDate());
// Return the completed view to render on screen
return convertView;
}
}
-
Importe toute les bibliothèques nécessaires avec ALT + ENTRÉE.
-
S'il reste des mots en rougue, regarde si le layout
item_reminder
est correctement nommé et si les identifiants desTextView
sont les bons.
-
Dans
MainActivity
, appelle laListView
dans une variablelistReminder
. -
Crée une instance de
ReminderAdapter
en lui donnant comme argument :
- le contexte de l'Activity :
MainActivity.this
- la liste d'élément à afficher :
reminders
- Associe l'adapter à la ListView et lance l'émultateur pour voir si tout marche bien
- Initialise ton projet dans git et envoie-le sur GitHub
- Partage ton projet à ton formateur pour qu'il puisse t'aider