1
votes

Comment récupérer des informations d'objet spécifiques à partir d'un spinner

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


1 commentaires

Obtenez la position du spinner, puis effectuez l'action basée sur la position.


3 Réponses :


0
votes

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;
            }
        }
    });


0 commentaires

1
votes

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!


2 commentaires

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 , puis introduits dans un ArrayList pour remplir les spinners. Je ne suis donc pas sûr qu'une instruction Switch soit suffisante pour autant d'objets.


pourriez-vous obtenir l'objet de cours directement à partir de votre TreeMap avec le nom du cours comme clé?



0
votes

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 étant le tableau de Spinners


0 commentaires