2012-09-27 73 views
1
<Spinner 
    android:id="@+id/spinner1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_below="@+id/editText2" 
    android:layout_marginTop="22dp" 
    android:entries="@array/categorylist" 
    android:prompt="@string/category" /> 

我已经创建了上述格式的微调!重新设置Android Spinner设置值

final Spinner spnr= (Spinner)findViewById(R.id.spinner1); 
    String category=spnr.getSelectedItem().toString(); 

通过获取以上格式的值来推动微调器值的分贝。

现在当从db中检索到值时。微调应该根据具体的价值设置... 我怎么能实现任何想法请问?

+0

做你的意思是你会如何明确地显示为已选定,而不是第一个(默认的) –

+0

@Arpit加尔格一个particualr项目。是的,它应该显示从db中检索时选择的特定微调项目 – Chetan

回答

1

只有当您存储设置为微调器条目的项目数组时才有可能。您可以在微调器中设置所选项目的位置。所以你必须找出你从数据库查询的项目的索引。加载categorylist的StringArray并迭代数组,并将每个项目与从数据库中获取的项目进行比较。然后将找到的项目的索引设置为微调器中的选定项目。

String[] list = getResources().getStringArray(R.array.categorylist); 
    int index = 0; 
    for(String item : list) { 
     if(item.equals("your_item")){ 
      break; 
     } 
     index++; 
    } 
    spinner.setSelection(index); 
+0

我已经存储了array.xml中的值,如上面代码 – Chetan

+0

好吧然后加载字符串数组并找出项目索引。像上面的代码。 – knvarma

+1

或者你也可以这样做,而不是将字符串项存储在数据库中,你可以保存项目的索引。从数据库中检索时,您将设置与您的微调器的选定项目相同的索引。 – knvarma

1

那么通过使用为setSelection()您可以微调,而不是第一个(默认)设置特定的选择。 现在你的问题将是如何从你拥有的价值中获得位置。 因此,这里的代码来做到这一点:

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

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

int spinnerPosition = yourAdap.getPosition(yourString); 

//set the default according to value 
spnr.setSelection(spinnerPosition); 
+0

我没有使用任何阵列适配器为我的微调!我已经在array.xml文件 – Chetan

+0

中保存了spinner的值,所以什么是最重要的......你可以根据它包含的值找到item的索引 –