如何设置微调器默认值而不是位置?

vin*_*thp 49 android spinner simplecursoradapter android-spinner

我在数据库中有1-50条记录.我使用游标获取这些数据,并使用简单光标适配器将这些值设置为Spinner.现在我需要的是我想设置一个值,将第39个值设置为默认值.但不是我的立场,我想通过它的价值来设定.

我知道如何通过其位置设置微调器默认值

   spinner.setSelection(39) 
Run Code Online (Sandbox Code Playgroud)

将微调器设置为该值.

但我不知道在数据库中通过其值(文本)设置微调器默认值.我知道数据库中的值.例如,"书籍"是微调器中的一个值.我需要将微调器默认设置为书籍.

有没有办法做到这一点?

Vin*_*raj 108

如果要设置微调器值,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);
Run Code Online (Sandbox Code Playgroud)

请参阅链接如何按值设置微调器的选定项目,而不是按位置?

  • 这才是真正的答案. (2认同)

vin*_*thp 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();  
    } 
Run Code Online (Sandbox Code Playgroud)

调用方法

    Spinner location2 = (Spinner)findViewById(R.id.spinner1);
    int location2id = getPostiton(cursor.getString(3),cursor);
    location2.setSelection(location2id);
Run Code Online (Sandbox Code Playgroud)

我希望它对某些人有所帮助..


Svi*_*ana 10

将字符串与index中的值进行比较

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;
             }
         }
     }
Run Code Online (Sandbox Code Playgroud)