Dans mon application android, j'ai un Spinner, et j'essaie de détecter quand un élément est sélectionné. Je sais que cela peut être fait en utilisant la méthode setOnItemSelectedListener()
, mais ce que je ne comprends pas est que cela fonctionne très bien:android - Spinner setOnItemClickListener n'accepte pas la classe nommée implémentant OnItemClickListener comme paramètre
((Spinner)findViewById(R.Id.mySpinner)).setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
// implement onItemClick here
});
Bien que cela donne une erreur que le paramètre est « non applicable » à Spinner:
((Spinner)findViewById(R.Id.mySpinner)).setOnItemSelectedListener(new MyOnItemSelectedListener());
Où est-ce MyOnItemSelectedListener, et il est une classe imbriquée dans mon MainActivity:
private class MyOnItemSelectedListener implements AdapterView.OnItemSelectedListener
{
public MyOnItemSelectedListener() {}
// implement onItemClick here
}
ce que je veux atteindre est non seulement le code qui fonctionne - je l'ai déjà t chapeau. C'est un code qui est facilement lisible (avec le vrai nom des choses dans mon code et la structure de ma classe MainActivity, il est plus lisible en utilisant une classe imbriquée qu'une classe anonyme). Comment je comprends java, ces deux devraient être la même chose essentiellement, sauf une classe a un nom, et l'autre ne le fait pas.
Merci, cela a fonctionné. Je ne sais pas pourquoi ça n'a pas été le cas quand j'ai essayé la dernière fois, mais c'est le cas maintenant. Peut-être que j'avais un mauvais type quelque part. – sisisisi