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.