Spinner.setSelection ne déclenche pas OnItemSelectedListener correctement
Je suis actuellement en train de travailler sur un Compte de l'Activité de Gestion pour mon application Android et je vais avoir de la difficulté à comprendre pourquoi le setSelection() méthode à partir d'un spinner ne déclenche pas la OnItemSelectedListener attaché à dit Spinner.
Voici ce que j'ai actuellement;
onCreate() méthode :
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.account_management);
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
retreiveLanguage();
initializeUI();
//Vérification si l'usager est déjà connecté
Globals appState = ((Globals) this.getApplication());
boolean userLoggedIn = appState.isUserLoggedIn();
boolean userInfoAvailable = appState.isUserInfoAvailable();
if (userLoggedIn && userInfoAvailable) {
fillUI();
}
}
Des lignes à partir de la initializeUI() méthode qui est appelée sur l'Activité de création qui montre la liaison de la Fileuse de l'Auditeur :
/** OnItemSelectedHandler for the Country Spinner */
mCountrySpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
Log.i(TAG, "onCountrySelected() was called, position : " + pos);
mProvinces = new ArrayList<String>();
mProvincesCode = new ArrayList<String>();
mXML.parseResponse(FileManager.getInstance().getPortalOptions());
for (int i = 0; i < mXML.getCountry(pos).sizeProvinces(); i++){
mProvinces.add(mXML.getCountry(pos).getProvince(i).getLabel(mLanguage));
mProvincesCode.add(mXML.getCountry(pos).getProvince(i).getCode());
}
mProvinceArrayAdapter = new ArrayAdapter<String>(ManageAccountActivity.this,
android.R.layout.simple_spinner_item, mProvinces);
mProvinceArrayAdapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
mProvinceSpinner.setAdapter(mProvinceArrayAdapter);
}
public void onNothingSelected(AdapterView<?> arg0) {
//Do Nothing ...
}
});
Et encore un autre couple de lignes, cette fois à partir de la fillUI méthode() :
Log.i(TAG, "Setting country based on user information.");
((Spinner) findViewById(R.id.spin_country))
.setSelection(mCountriesCode.indexOf(mUser.getCountry()));
//TODO : Fix Provinces and States not being changed accordingly
Log.i(TAG, "Setting province based on user information.");
((Spinner) findViewById(R.id.spin_province))
.setSelection(mProvincesCode.indexOf(mUser.getProvince()));
Donc, avec cela, je m'attends à la OnItemSelectedListener être appelée juste après j'ai mis de la sélection dans la fillUI() la méthode, mais ce n'est pas ce qui se passe au moment de l'exécution :S
Voici mon LogCat extrait qui montre que l'Auditeur n'est pas appelé lorsque la sélection est appliquée dans le pays spinner:
I/ManageAccountActivity(28108): Paramètre de pays sur la base des informations de l'utilisateur.
I/ManageAccountActivity(28108): Réglage de la province en fonction des informations de l'utilisateur.
I/ManageAccountActivity(28108): onCountrySelected() a été appelé, position : 1
Comme une expérience, j'ai aussi essayé de mettre le fillUI() l'appel à la méthode onStart de mon Activité, mais qui n'a pas changé la façon dont l'application a réagi.
Merci d'avance pour tous les pointeurs, de l'aide ou des conseils !
Eh bien, je ne le changer ... en déplaçant la sélection de 0 à 1, ce ne serait pas considérée comme modifiée ?
OriginalL'auteur Jean-Philippe Roy | 2012-01-30
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé de mettre le compteur à l'aide de deux arguments, le second à l'aide d'un booléen:
De la les développeurs de page il montre:
Eh bien merci beaucoup, je l'ai essayé la valeur true à la première place :P. Définissant à la fois les filateurs " pour setSelection(pos, true) a fait le tour.
Mal, paramètre 'animer' param n'est PAS connecté avec tir OnItemSelectedListener.
Je viens de le tester et ce à l'aide de la méthode avec
animate
en effet déclencheursonItemSelected
sans ne.Pourquoi est Android donc cassé!
OriginalL'auteur Nick
Suffit d'utiliser le code suivant:
OriginalL'auteur Aman Goel
J'ai trouvé la solution à mon problème en ajoutant ceci à la méthode onCreate. Le programme fonctionne, mais seulement pour la première sélection. La deuxième fois que je sélectionne le programme se bloque l'émulateur.
OriginalL'auteur Tarnow
J'ai trouvé que setSelection(pos) fonctionne si vous déclarez
avant que.
OriginalL'auteur Taha