Skip to content

Instantly share code, notes, and snippets.

@bastienapp
Last active October 2, 2018 08:54
Show Gist options
  • Save bastienapp/93083fc23814bb3586fabcae3667f1eb to your computer and use it in GitHub Desktop.
Save bastienapp/93083fc23814bb3586fabcae3667f1eb to your computer and use it in GitHub Desktop.

MyReminder

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

AndroidStudio

  • 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

Layout

  • Ajoute une ListView avec l'identifiant list_reminder, dans activity_main.xml.

  • Modifie la ListView pour qu'elle prenne toute la page.

  • Crée le layout item_note.xml d'une note, qui contiendra une TextView avec l'identifiant tv_reminder et une TextView avec l'identifiant tv_creation_date.

  • Attention : l'élément principal de item_note.xml doit avoir sa hauteur en wrap_content (sinon une ligne de la liste prendra toute la hauteur de la page).

Modèle

  • 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

ArrayList

  • Dans MainActivity, crée une ArrayList de ReminderModel vide

  • Ajoute dans cette ArrayList des instances de ReminderModel 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"));

Adapter

  • 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 des TextView sont les bons.

Data binding

  • Dans MainActivity, appelle la ListView dans une variable listReminder.

  • 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

Git

  • Initialise ton projet dans git et envoie-le sur GitHub
  • Partage ton projet à ton formateur pour qu'il puisse t'aider
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment