2012-09-27 142 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的索引 –