2010-07-03 20 views
7

Bir döndürücü ile görüşüm var. Etkinlik, üst öğenin Spinner'da gösterdiği değerleri eklediğim veya sildiğim bir pop-up ile başka bir canlılığı başlatır. Yani, onActivityResult() İçerisinde, fillSpinner() yöntemimi çağırarak, ek veya silinmiş değerleri yansıtacak şekilde Döndürücü'nin içeriğini yeniliyor. Bu yöntem parametresi, daha önce seçilen bir değerdir: I Spinner açık zamanBir Spinner'ın Yenilenmesi

private void fillSpinner(String value){ 

    Cursor c = mDbHelper.getAllCategories(); 
    startManagingCursor(c); 
    c.moveToFirst(); 

    String[] from = new String[]{DBAdapter.KEY_CATEGORY};  
    SimpleCursorAdapter scCats = new SimpleCursorAdapter(
     this, android.R.layout.simple_spinner_item,c,from, 
      new int[]{android.R.id.text1}); 
    scCats.setDropDownViewResource(
     android.R.layout.simple_spinner_dropdown_item); 
    category.setAdapter(scCats); 

    if (value != null && value != "") { 
     category.setSelection((int)mDbHelper.categoryIndex(value)); 
    } 
} 

, (o tazelendi yani) doğru bir listesini içerir ve doğru bir değer seçilir. Bununla birlikte, Spinner kontrolünün kendisi (kapalı durumunda) seçilen değeri göstermez, ancak listede ilk olanı gösterir.

Hata ayıklayıcısında kod boyunca adım attığımda, SetSelection() çağrılmadan önce ve sonra Spinner değeri doğrudur (ve her zaman aynı doğru kimliğe sahip olur). Ancak, olaydan çıkamamadığımdan, kısa bir süre sonra yürütmeyi sürdürdüğümde, Spinner'daki değer değişir. Başka bir deyişle

, spinner en görüntülenen dize değişti ve benim açılan faaliyetinden döndüğünüzde seçilen öğe farklıdır edilir.

Herhangi bir fikir takdir edilmektedir.

cevap

1

Sorun, sanırım her çağrıda imlecim yeniden oluşturuluyordu. Daha iyi bir açıklama yok. This post dolaylı olarak beni doğru yönde işaret etti.

İlk olarak oluşturduktan sonra imleci beklemeye alarak, sorularımın yöntemini kullanarak çalışmak yerine, liste verilerini değiştirdikten sonra requery() öğesini çağırabilirdim. Şimdi iyi çalışıyor.

5

Bu soruna basit bir çözüm buldum: Spinner'ın doğru seçilmiş öğeyi göstermesini sağlamak için, Spinner.setSelection (int position, Boolean NavigateTo) formunu kullanın.

Örnek: Spin.setSelection (iPos, true);

İyi şanslar.

+0

Teşekkür ederiz! Benim için çalıştı. – Yellos

İlgili konular