J'ai affaire à des spinners dans mon application Android et, en cliquant sur un bouton, je souhaite obtenir des informations spécifiques sur l'objet. Je connais mySpinner.getSelectedItem (). ToString (); mais cela imprime quelle que soit ma méthode Objects toString (); . Disons que je veux getCredits (); à partir de mon objet Course qui est actuellement sélectionné sur un spinner. Comment procéder?
voici pour vous donner une idée de ce que j'essaie de faire:
for(int i = 0; i < allSpinners.size(); i++) {
System.out.println(allSpinners.get(i).getSelectedItem().toString());
}
J'ai besoin d'obtenir tous les crédits de tous les spinners du liste.
Ce code au lieu de System.out.println (); doit obtenir les crédits de l'objet Course via une méthode getCredits (); et ajouter les ensemble + = mais je ne sais pas comment accéder à l'objet dans la liste des fileurs.
Modifier: Désolé pour le manque de clarté. Chaque spinner contient environ 300 objets qui sont extraits d'une ArrayList qui est remplie via une TreeMap qui prend des objets d'un fichier texte
3 Réponses :
Sous Android, vous pouvez faire comme ceci
Spinner spinner = findViewById(R.id.spinner1);
spinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 0:
//Do what you want
break;
case 1:
//Do what you want
break;
}
}
});
La liste de la double flèche est toujours remplie de chaînes fournies par son adaptateur, donc lorsque vous sélectionnez un élément dans la double flèche, vous ne pouvez pas vous attendre à autre chose qu'une simple chaîne; vous avez donc besoin d'un moyen d'utiliser cette chaîne pour obtenir votre objet personnalisé ("Course" dans votre exemple); une instruction switch est un moyen de le faire en prenant ce String 'course name' renvoyé par mySpinner.getSelectedItem (). toString (); , puis sur chaque switch case instanciez un objet Course , et faites ce que vous voulez dessus comme dans votre exemple getCredits();
Si vous déclenchez un auditeur, la même chose peut s'appliquer
mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch(position) // switch on item position in adapter
String selection = (String) parent.getItemAtPosition(position);
switch(selection) // switch on item String
}
}
si vous avez besoin d'aide supplémentaire, je serai heureux de vous accueillir!
Merci pour l'explication. Le problème est que chaque spinner contient environ 300 objets de type Course qui sont lus à partir d'un fichier texte et introduits dans un TreeMap
pourriez-vous obtenir l'objet de cours directement à partir de votre TreeMap avec le nom du cours comme clé?
Merci pour le rappel à tous, il s'avère que courseMap.get (allSpinners.get (i) .getSelectedItem (). toString ()). getCredits (); est la façon dont je dois m'y prendre. Tout cela dans une boucle for où i
Obtenez la position du spinner, puis effectuez l'action basée sur la position.