J'ai deux filateurs qui déclenchent l'événement onItemSelected. La question est de savoir comment savoir lequel a déclenché un tel événement? Jusqu'à présent, j'ai essayé:
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
{
Log.d("form","onitemselected");
switch (view.getId()) {
case R.id.region_spinner:
Region r = (Region)sregions.getSelectedItem();
Log.d("form","regionid:" + r.id);
break;
case R.id.state_spinner:
Log.d("form","state id:");
break;
}
Mais seul le premier journal est affiché, il n'y a donc aucune correspondance dans le commutateur.
utilisation:
switch(parent.getId()) {
...
}
c'est plutôt ce dont vous avez besoin. Le view
dans votre paramètre est la `` ligne '' réelle (c'est-à-dire l'enfant cliqué de l'élément spinner) et le parent est le `` spinner '' réel que vous recherchez.
Spinner est une sous-classe de AdapterView. L'objet parent transmis à la méthode est le spinner dans lequel l'élément a été sélectionné.
Utilisez le code ci-dessous si vous avez plusieurs filateurs dans une activité et que vous utilisez la méthode de remplacement onItemSelected
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
if (parent!!.id == R.id.spinner_1) {
// first spinner selected
} else if (parent!!.id == R.id.spinner_2) {
// second spinner selected
}
}
soit vous pouvez utiliser un boîtier de commutation
Si vous importez votre XML sur Kotlin, vous pouvez l'utiliser comme suit:
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id:
Long) {
when (parent)
firstSpinner -> {
// first spinner selection
}
secondSpinner -> {
// second spinner selected
}
}
}