2013-09-26 15 views
5

Tworzę element Spinner wewnątrz mojego LinearLayout. Chcę, aby wartości różniły się od widocznych. Nie chcę tego robić programowo. Chcę użyć tablic poniżej.Korzystanie z parametrów wejściowych z elementem Spinner

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <string-array name="select"> 
     <item>a</item> 
     <item>b</item> 
     <item>c</item> 
    </string-array> 

    <integer-array name="selectValues"> 
     <item>1</item> 
     <item>2</item> 
     <item>3</item> 
    </integer-array> 

</resources> 

Po prostu. Jeśli wybrano element a, chcę uzyskać 1 jako liczbę całkowitą. W jaki sposób?

<Spinner 
     android:id="@+id/sSelect" 
     android:layout_width="179dp" 
     android:layout_height="60dp" 
     android:layout_gravity="center" 
     android:entries="@array/select" 
     android:entryValues="@array/selectValues" /> 

Kiedy używam powyższego z poniżej.

public void onItemSelected(AdapterView<?> item, View arg1, int sort, 
      long arg3) { 
     // TODO Auto-generated method stub 
     String selectedItem = item.getItemAtPosition(sort).toString(); 
} 

Po prostu mogę uzyskać dane jako ciąg, a nie wartości. Mogę uzyskać wartości, które są widoczne.

+0

możliwe duplikat [Android - skonfigurować Spinner użyć tablicę] (http://stackoverflow.com/questions/1587028/android-configure-spinner-to-use-array) – naXa

Odpowiedz

12

Zachowaj wybrane wartości jako TypedArray i uzyskaj dostęp do metody w metodzie onItemSelected().

// Keep the selected values as TypedArray 
Resources res = getResources(); 
final TypedArray selectedValues = res 
     .obtainTypedArray(R.array.selectValues); 

Spinner spinner = ((Spinner) findViewById(R.id.sSelect)); 
spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, 
      int position, long id) { 
     //Get the selected value 
     int selectedValue = selectedValues.getInt(position, -1); 
     Log.d("demo", "selectedValues = " + selectedValue); 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> arg0) { 
     // TODO Auto-generated method stub 

    } 
}); 
+0

Czy możesz dać mi znać o Zasoby i funkcja getResources? –

+0

['getResources()'] (http://developer.android.com/reference/android/content/Context.html#getResources()) to metoda, do której można uzyskać dostęp z dowolnej klasy aktywności. – imranhasanhira

+0

Otrzymuję niestety zatrzymał się błąd? –

Powiązane problemy