2 votes

Pourquoi le commutateur OnItemSelectedListener par ID de vue ne fonctionne-t-il pas pour trouver le spinner sélectionné ?

J'ai la classe OnItemSelectedListener et le problème est que maintenant, lorsque je vais sélectionner un élément du spinner1, il n'affiche pas le texte du grille-pain qu'il est censé afficher. Le texte de grille est là juste pour voir si l'écouteur fonctionne et il ne fonctionne pas. J'ai deux cuillères tournantes et j'essaie d'obtenir les éléments sélectionnés dans les deux cuillères tournantes pour les variables individuelles. Toute aide est appréciée, je suis coincé avec cela depuis quelques heures.

J'ai utilisé cette technique de commutation sur les buttonlisteners et cela a bien fonctionné, mais ils sont sur ma classe principale, la classe d'activité, je ne suis pas sûr que cela dépende de cela et comment corriger cela si c'est le cas.

@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

    View v = parent.getSelectedView();
    switch (view.getId()) {

    case R.id.spinner1:
        Toast.makeText( parent.getContext(),
                "Selected item is " + parent.getItemAtPosition(pos).toString(),
                Toast.LENGTH_LONG).show();
        break;
    case R.id.spinner2:
        //Code here
        break;
    default:
        Toast.makeText(parent.getContext(), view.toString(), Toast.LENGTH_LONG).show();
        break;
    }
}

9voto

mjfgates Points 2089

Vous semblez penser que "parent" est l'activité contenant le Spinner, et que "view" est le Spinner. En fait, ce n'est pas le cas. Le "parent" est la ListView ou la SpinnerView. La "vue" est l'élément individuel de la liste.

Donc, vous voudriez utiliser

switch (parent.getId())

pour vérifier l'ID du spinner contenant l'élément qui vient d'être sélectionné.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X