2012-05-17 14 views
47

Veritabanında 1-50 kayıt var. Bu verileri imleci kullanarak getiriyorum ve bu değerleri Basit İmleç Adaptörünü kullanarak Spinner'a ayarlıyorum. Şimdi ihtiyacım olan şey, bir değeri varsayılan olarak 39. değeri olarak ayarlamak istiyorum. Ama onun konumuna göre değil, onun değerine göre ayarlamak istiyorum. Çevirici Varsayılanı, Konum yerine Değer ile nasıl ayarlanır?

Ben bu değere değer değişimi ayarlayacaktır konumunu

spinner.setSelection(39) 

yoluyla dönen varsayılan ayarlarının nasıl biliyorum.

Ancak, spinner varsayılanını veritabanındaki değerine (metin) göre ayarlama konusunda hiçbir fikrim yoktu. Veritabanındaki değerleri biliyorum. Örneğin, "kitaplar", çeviricideki değerlerden biridir. Spinner varsayılanını kitaplar olarak ayarlamalıyım.

Bunu yapmanın herhangi bir yolu var mı?

+1

görünüyor ihtiyacınız olan tüm db arasında bir değer getirmesi olduğu gibi. Yoksa bir şeyi yanlış anladım mı? – keyser

+0

@keyser Hayır .. Veritabanından değer aldım ve basit imleç bağdaştırıcısını kullanarak döndürücüye ayarlıyorum. Şimdi bir şey, spinner'ının bir değerini kendi değerine göre değil varsayılan olarak varsayılan olarak ayarlamanız gerekiyor .. açıkladım mı net olarak – GoCrazy

+0

Hayır, hala db'den değeri almanız ve pinner.setSelection (somepositionvalue) ile ayarlamanız gerektiği görünüyor. – Orest

cevap

14

Son olarak bağlantıyı bakın, ben eğiren pozisyon yöntemini

çağrılması onun dize

private int getPostiton(String locationid,Cursor cursor) 
{ 
    int i; 
    cursor.moveToFirst(); 
    for(i=0;i< cursor.getCount()-1;i++) 
    { 

     String locationVal = cursor.getString(cursor.getColumnIndex(RoadMoveDataBase.LT_LOCATION)); 
     if(locationVal.equals(locationid)) 
     { 
      position = i+1; 
      break; 
     } 
     else 
     { 
      position = 0; 
     } 
     cursor.moveToNext(); 
    } 

almak olabilir hangi izlenecek yolu kullanan sorun çözüldü

Spinner location2 = (Spinner)findViewById(R.id.spinner1); 
    int location2id = getPostiton(cursor.getString(3),cursor); 
    location2.setSelection(location2id); 

Umarız bir tane için yardımcı olur ..

+0

Belki de biraz daha yalın ve daha zarif bir sürüm şöyle görünebilir: kamu sınıfı SpinnerHelper { public static int getPosition (Dize displayText, String fieldName, İmleç imleci) { int position = -1; cursor.moveToFirst(); while (cursor.moveToNext()) { Dize metni = cursor.getString (cursor.getColumnIndex (fieldName)); ise (metin.eşittir (displayText)) { position = cursor.getPosition(); kırılması; } dönüş konumu; } } –

97

Çevirici değerlerini arraylist veya array ile ayarlıyorsanız, değerin indeksini kullanarak çeviricinin seçimini ayarlayabilirsiniz.

String myString = "some value"; //the value you want the position for 

ArrayAdapter myAdap = (ArrayAdapter) mySpinner.getAdapter(); //cast to an ArrayAdapter 

int spinnerPosition = myAdap.getPosition(myString); 

//set the default according to value 
spinner.setSelection(spinnerPosition); 

How to set selected item of Spinner by value, not by position?

+1

Cevabınız için teşekkürler .. ArrayAdapter kullanarak mümkün olduğunu biliyorum .. Aynı Basit İmleç Adaptör ile mümkün mü? – GoCrazy

+0

@Vino Evet, aşağıdaki cevabı gözden geçirin: http://stackoverflow.com/a/11667045/293280 –

+2

Gerçek cevap budur. –

8

bu nasıl i did olan endeks

private void selectSpinnerValue(Spinner spinner, String myString) 
    { 
     int index = 0; 
     for(int i = 0; i < spinner.getCount(); i++){ 
      if(spinner.getItemAtPosition(i).toString().equals(myString)){ 
       spinner.setSelection(i); 
       break; 
      } 
     } 
    } 
1

gelen değerle dize karşılaştırın:

String[] listAges = getResources().getStringArray(R.array.ages); 

     // Creating adapter for spinner 
     ArrayAdapter<String> dataAdapter = 
       new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, listAges); 

     // Drop down layout style - list view with radio button 
     dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     // attaching data adapter to spinner 
     spinner_age.getBackground().setColorFilter(ContextCompat.getColor(this, R.color.spinner_icon), PorterDuff.Mode.SRC_ATOP); 
     spinner_age.setAdapter(dataAdapter); 
     spinner_age.setSelection(0); 
     spinner_age.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       String item = parent.getItemAtPosition(position).toString(); 

       if(position > 0){ 
        // get spinner value 
        Toast.makeText(parent.getContext(), "Age..." + item, Toast.LENGTH_SHORT).show(); 
       }else{ 
        // show toast select gender 
        Toast.makeText(parent.getContext(), "none" + item, Toast.LENGTH_SHORT).show(); 
       } 
      } 
      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 
      } 
     }); 
İlgili konular