2012-05-17 8 views
47

У меня есть 1-50 записей в базе данных. Я извлекаю эти данные с помощью курсора и устанавливаю эти значения в Spinner с помощью Simple Cursor Adapter. Теперь мне нужно, чтобы я установил одно значение, скажем, 39-е значение по умолчанию. Но не по своей позиции, которую я хочу установить по ее значению.Как установить Spinner Default по его значению вместо позиции?

Я знаю, как установить вращатель по умолчанию его положение

spinner.setSelection(39) 

установит вертушку к этому значению.

Но я не имел ни малейшего представления о том, чтобы установить значение параметра spinner по умолчанию (его значение) в базе данных. Я знаю значения в базе данных. Например, «книги» являются одним из значений в счетчике. Мне нужно установить значение параметра spinner в качестве книг.

Есть ли способ для этого?

+1

Кажется, как будто все, что вам нужно, чтобы извлечь значение из БД. Или я что-то не понимаю? – keyser

+0

@keyser Нет .. Я выбрал значение из базы данных и установил его на счетчик с помощью простого адаптера курсора. Теперь мне нужно установить одно значение счетчика по умолчанию по его значению не по его позиции .. я объяснил ясно – GoCrazy

+0

Нет, вам все равно кажется, что вам просто нужно получить значение от самого db и установить его с помощью pinner.setSelection (somepositionvalue). – Orest

ответ

14

Наконец, я решил эту проблему, используя следующий путь, в котором положение блесны может быть получить его строки

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

Вызов метода

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

Я надеюсь, что это поможет для некоторых ..

+0

Возможно, немного более компактная и элегантная версия может выглядеть так: public class SpinnerHelper { public static int getPosition (String displayText, String fieldName, курсор) { int position = -1; cursor.moveToFirst(); while (cursor.moveToNext()) { Строковый текст = cursor.getString (cursor.getColumnIndex (fieldName)); если (текст.equals (displayText)) { position = cursor.getPosition(); break; } } возвращение позиции; } } –

97

Если вы устанавливаете значения прядильщика на arraylist или array, вы можете установить выбор счетчика, указав его значение.

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

Спасибо за ответ. Я знаю, что это возможно с помощью ArrayAdapter. То же самое можно сделать с помощью простого адаптера курсора? – GoCrazy

+0

@Vino Да, вы можете получить следующий ответ: http://stackoverflow.com/a/11667045/293280 –

+2

Это реальный ответ. –

8

Сравнить строку со значением индекса от

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

это, как я сделал это:

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) { 
      } 
     }); 

 Смежные вопросы

  • Нет связанных вопросов^_^