Spinner.setSelection wird nicht ausgelöst, richtig OnItemSelectedListener

Ich gerade arbeite, auf einem Konto-Management-Aktivitäten für mein Android-Anwendung, und ich habe Mühe herauszufinden, warum die setSelection() Methode von einem spinner nicht auslösen OnItemSelectedListener angebracht, sagte Spinner.

Hier ist, was ich derzeit habe;

onCreate () - Methode :

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

Entsprechende Zeilen aus der initializeUI () - Methode, die aufgerufen wird, auf die Tätigkeit der Schaffung, das zeigt die Bindung der Spinner den Hörer :

    /** 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 ...               
        }
    });

Wieder ein paar Zeilen, diesmal aus dem fillUI Methode() :

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

Also mit diesem würde ich erwarten, dass die OnItemSelectedListener genannt zu werden, direkt nachdem ich die Auswahl in der fillUI () - Methode, aber das ist nicht das, was passiert, Laufzeit :S

Hier mein LogCat-Auszug, der zeigt, dass der Listener nicht aufgerufen, wenn die Selektion wird angewendet, um das Land der spinner:

I/ManageAccountActivity(28108): Einstellung Land, basierend auf Benutzer-Informationen.

I/ManageAccountActivity(28108): Einstellung Provinz, basierend auf Benutzer-Informationen.

I/ManageAccountActivity(28108): onCountrySelected() wurde aufgerufen, Stellung : 1

Als ein experiment, ich habe auch versucht, indem die fillUI () - Aufruf in der onStart-Methode für meine Tätigkeit, aber das nicht ändern, wie die Anwendung reagiert.

Vielen Dank im Voraus für jegliche Hinweise, Hilfe oder Tipps !

,OnItemSelectedListener nur ausgelöst, wenn Sie einige Aktionen auf spinner..zu ändern
Gut ich ändere es ... verschieben Sie die Auswahl von 0 auf 1 wäre das nicht betrachtet, verändert ?

InformationsquelleAutor Jean-Philippe Roy | 2012-01-30

Schreibe einen Kommentar