2012-01-28 18 views
11

CursorAdapter ile doldurulmuş bir çevirici yaşıyorum. Şimdi bu döndürücü oluştururken (dinamik olarak) 0'dan farklı bir varsayılan seçim yapmak istiyorum (CursorAdapter listesindeki ilk öğe 0)Android Spinner.setSelection() çalışmıyor

Nesnenin ardından çağrılan söz konusu iş için bir ayarlayıcım var. yarattı. Fakat bir sebepten dolayı, bu ayarlayıcıda ne geçtiğim önemli değil, 0 her zaman Spinner'ın OnItemSelectedListener yöntemine geçirilir. Sadece ilk baştaki seçimi gerçekleştiğini kadar beklemek ve yine benim ayarlayıcı çalıştırırsanız

ANCAK, her şey gayet iyi çalışıyor. Yani, burada daha iyi anlayabilmeleri için ben ayıklayıcısında gördükleri şeydir:

  • nesne (dönen)
  • spinner dinleyici oluşturulur
  • ayarlayıcı çalıştırılır takılır, bir sayı (4 diyelim spinner yolu 4'ten fazla seçimleri içerir)
  • YAPIN onItemSelected() ilk kez çalıştırılan biraz beklemek setSelection() yönteme geçirilen, ancak bu yönteme verilen pozisyon 0 olduğunu!
  • yine
  • tekrar onItemSelected() çalıştırılan set, BU ZAMAN, verilen pozisyon olması gerektiği gibi 4'tür çalıştırmak BİRAZ DAHA BİTMEDİ!

Şimdi bu kablolu bu. Her zaman 0 olan ilk başlangıç ​​seçimine kadar çeviriciyi ayarlamak mümkün görünmüyor. Öyleyse neden böyle ve ilk seçimi yapmak için ne yapabilirim?

+1

Spinner'ı kurarken kullandığınız kodu gönderir misiniz? Bu yanlış bir şekilde –

+0

yanlış bir kod var olabilir gibi geliyor Bu cevap (başka bir SO soru üzerinde) benim için çalıştı: http://stackoverflow.com/a/17370964/1617737 –

cevap

30

sahte canlandırılır = ile Spinner#setSelection (int position, boolean animate) deneyin. Bir süredir hatırlıyorum ki benzer bir problemim vardı ve bu da hile yaptı. İç uygulama, canlandırma parçasından gelen farklılıktan farklı görünmektedir. Seçilen spinner öğeyi varsayılan biliyorsanız aşağıdaki gibi

+5

bir çekicilik gibi çalıştı. – masi

+0

Benim için de işe yaradı ... ama animate doğru olduğunda neden çalıştığını bilmiyorum .. –

1

, yazılabilir: Eğer spinner madde seçimi değiştirdiğinizde

Spinner sp = (Spinner) findViewById(R.id.spinner); 
sp.setSelection(0); // sets the first item 

onItemselectedlistener denir.