[List] Remplir une ArrayList
Fermé
SuperGoldfish
Messages postés
5
Date d'inscription
lundi 4 mai 2020
Statut
Membre
Dernière intervention
5 mai 2020
-
Modifié le 4 mai 2020 à 15:32
SuperGoldfish Messages postés 5 Date d'inscription lundi 4 mai 2020 Statut Membre Dernière intervention 5 mai 2020 - 5 mai 2020 à 18:41
SuperGoldfish Messages postés 5 Date d'inscription lundi 4 mai 2020 Statut Membre Dernière intervention 5 mai 2020 - 5 mai 2020 à 18:41
A voir également:
- [List] Remplir une ArrayList
- Organigramme a remplir word - Guide
- List disk - Guide
- Créer une liste déroulante excel - Guide
- Directory list & print - Télécharger - Divers Utilitaires
- Remplir et signer pdf - Guide
3 réponses
BunoCS
Messages postés
15510
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
20 mars 2025
3 914
4 mai 2020 à 16:54
4 mai 2020 à 16:54
Hello,
Difficile de t'aider avec un simple "ça ne fonctionne pas"... Néanmoins, il y a plusieurs choses qui ne vont pas forcément
Pour générer un nombre aléatoire, il faut utiliser
Note : généralement, les noms de variable commencent par une minuscule
Difficile de t'aider avec un simple "ça ne fonctionne pas"... Néanmoins, il y a plusieurs choses qui ne vont pas forcément
film1.getAffiches()Je m'attends à récupérer plusieurs affiches. C'est le cas ? Quel est le type de l'objet retour ? Un Drawable ? Un DrawableID ?
films.indexOf(film1.getTitres())Même remarque, je m'attends à une liste. De plus, tu essaies de récupérer l'occurrence d'un objet à partir d'un objet d'un autre type. C'est comme si tu comparais des choux et des carottes.
Pour générer un nombre aléatoire, il faut utiliser
Random().nextInt(int bound), sachant que cette méthode va te générer un entier entre 0 et bound-1. Dans ton cas, tu peux utiliser ceci :
Random random = new Random(); int aleatoire = random.nextInt(films.size()); FilmC1 filmAleatoire = films.get(aleatoire); affiche.setImageResource(filmAleatoire.getAffiche()); titre.setText(filmAleatoire.getTitre()); description.setText(filmAleatoire.getDescription());
Note : généralement, les noms de variable commencent par une minuscule
BunoCS
Messages postés
15510
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
20 mars 2025
3 914
4 mai 2020 à 21:37
4 mai 2020 à 21:37
Pour les données, il vaut mieux garder un objet Film qui stocke affiche, titre et description plutôt que 3 listes. Un jour, tu vas vouloir, par exemple, supprimer une affiche mais du coup, tes tableaux n'auront plus la même taille et tu vas crasher.
Si je comprends bien, tu veux afficher un film de manière aléatoire et non créer un pseudo film avec les infos d'autres films prises de manière aléatoire, non ? La méthode que je t'ai posté te permet de générer un seul chiffre aléatoire, entre 0 et le nombre de films dans ta liste. Là, tu vas piocher aléatoirement dans tes listes pour créer un film
Si je comprends bien, tu veux afficher un film de manière aléatoire et non créer un pseudo film avec les infos d'autres films prises de manière aléatoire, non ? La méthode que je t'ai posté te permet de générer un seul chiffre aléatoire, entre 0 et le nombre de films dans ta liste. Là, tu vas piocher aléatoirement dans tes listes pour créer un film
SuperGoldfish
Messages postés
5
Date d'inscription
lundi 4 mai 2020
Statut
Membre
Dernière intervention
5 mai 2020
5 mai 2020 à 10:57
5 mai 2020 à 10:57
Ouais c'est exactement ca ! Mais le problème c'est que je ne vois pas par quel methode il faut passer pour faire parcourir un random dans la liste films ..
BunoCS
Messages postés
15510
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
20 mars 2025
3 914
>
SuperGoldfish
Messages postés
5
Date d'inscription
lundi 4 mai 2020
Statut
Membre
Dernière intervention
5 mai 2020
5 mai 2020 à 13:30
5 mai 2020 à 13:30
As-tu compris le code que je t'ai posté ? Je pense répondre à ton besoin. Je le remets, avec des commentaires
Dis-moi si quelque chose ne convient pas
// stockage des films dans une liste films = new ArrayList<FilmsC1>() ; // génération d'un nombre aléatoire compris entre 0 et le nombre de films de ta liste Random random = new Random(); int aleatoire = random.nextInt(films.size()+1); // récupération du film correspondant FilmC1 filmAleatoire = films.get(aleatoire); // affichage des données affiche.setImageResource(filmAleatoire.getAffiche()); titre.setText(filmAleatoire.getTitre()); description.setText(filmAleatoire.getDescription());
Dis-moi si quelque chose ne convient pas
SuperGoldfish
Messages postés
5
Date d'inscription
lundi 4 mai 2020
Statut
Membre
Dernière intervention
5 mai 2020
5 mai 2020 à 14:49
5 mai 2020 à 14:49
HA ! oui ok je comprends beaucoup mieux la fonction get ! Cependant j'ai toujours un problème, lorsque je lance l'appli et que j'arrive sur l'activité - Page1 - (celle ou est écrit ce code), ca me ramène à l'activité précédente, comme si le code comprenait toujours des erreurs. Je pense que cela est dût à ma manière de remplir ma liste de film, ou peut être à mon activité - FilmC1 - ... : Pour remplir ma liste j'ai tapé dan l'activité Page1 :
Pour l'activité FilmC1 j'ai tapé :
Encore merci de votre attention c'est gentil
.
//Nouvelle Liste
this.films = new ArrayList<>();
FilmsC1 film1 = new FilmsC1(R.drawable.image_1 , "Titre 1" , "Description 1");
FilmsC1 film2 = new FilmsC1(R.drawable.image_2 , "Titre 2" , "Description 2");
FilmsC1 film3 = new FilmsC1(R.drawable.image_3 , "Titre 3" , "Description 3");
//Génération d'un entier aléatoire entre 0 et TaileListe
Random random = new Random();
int r = random.nextInt(films.size()+1) ; // ... Et le reste du code
Pour l'activité FilmC1 j'ai tapé :
class FilmsC1 {
private int affiches;
private String titres;
private String descriptions;
public int getAffiches() {
return affiches;
}
public String getTitres() {
return titres;
}
public String getDescriptions() {
return descriptions;
}
public FilmsC1(int paffiche, String ptitre, String pdescription) {
this.affiches = paffiche;
this.titres = ptitre;
this.descriptions = pdescription;
}
}
Encore merci de votre attention c'est gentil
BunoCS
Messages postés
15510
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
20 mars 2025
3 914
5 mai 2020 à 17:03
5 mai 2020 à 17:03
Dans ton 1er bout de code, tu ne remplis pas ta liste ;)
N'hésites pas à regarder les Logs dans la fenêtre Logcat pour voir et comprendre ce qui cloche.
N'hésites pas à regarder les Logs dans la fenêtre Logcat pour voir et comprendre ce qui cloche.
SuperGoldfish
Messages postés
5
Date d'inscription
lundi 4 mai 2020
Statut
Membre
Dernière intervention
5 mai 2020
>
BunoCS
Messages postés
15510
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
20 mars 2025
5 mai 2020 à 18:41
5 mai 2020 à 18:41
Ok ca marche super merci !
Modifié le 4 mai 2020 à 21:38
film1.getAffiche recevra une seule image qui est un Drawable, film2 aura une autre image, et ainsi de suite. Je voudrais donc choisir d'afficher un film(r) ou r serait le random(). Pour cela j'avais déja utilisé Integer[] et Random().nextInt, mais cette méthode ne fonctionne pas avec les String[], or je pensais à utiliser un même random r pour parcourir 3 tableaux (un pour les images, un pour les titres et un pour les descriptions) comme s'en suit :
Je vous remercie d'avance !