Wskaźniki sprawności pozwalają szybko wybrać jedną wartość z zestawu. W stanie domyślnym wskaźnik postępu pokazuje obecnie wybraną wartość. Dotknięcie wskaźnika postępu wyświetli menu ze wszystkimi pozostałymi wartościami, które może wybrać użytkownik.
![](https://developer.android.com/static/images/ui/spinner.png?authuser=7&hl=pl)
Za pomocą obiektu Spinner
możesz dodać wskaźnik postępu do układu, co zwykle robi się w układzie XML z elementem <Spinner>
. Widać to w tym przykładzie:
<Spinner android:id="@+id/planets_spinner" android:layout_width="match_parent" android:layout_height="wrap_content" />
Aby wstawić listę opcji do wyboru, podaj SpinnerAdapter
w kodzie źródłowym Activity
lub Fragment
.
Jeśli używasz komponentów Material Design, wyświetlone menu jest odpowiednikiem elementu Spinner
.
Wypełnij wskaźnik postępu opcjami użytkownika
Opcje, które podajesz we wskaźniku ładowania, mogą pochodzić z dowolnego źródła, ale musisz je podać za pomocą obiektu SpinnerAdapter
, na przykład ArrayAdapter
, jeśli opcje są dostępne w tablicy, lub CursorAdapter
, jeśli opcje są dostępne w zapytaniu bazy danych.
Jeśli na przykład dostępne opcje dotyczące spinnera są już określone, możesz podać im tablicę z ciągami znaków zdefiniowaną w pliku zasobów z ciągiem:
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="planets_array"> <item>Mercury</item> <item>Venus</item> <item>Earth</item> <item>Mars</item> <item>Jupiter</item> <item>Saturn</item> <item>Uranus</item> <item>Neptune</item> </string-array> </resources>
W przypadku takiej tablicy możesz użyć podanego niżej kodu w Activity
lub Fragment
, aby dostarczyć do spinnera tablicę za pomocą wystąpienia ArrayAdapter
:
Kotlin
val spinner: Spinner = findViewById(R.id.planets_spinner) // Create an ArrayAdapter using the string array and a default spinner layout. ArrayAdapter.createFromResource( this, R.array.planets_array, android.R.layout.simple_spinner_item ).also { adapter -> // Specify the layout to use when the list of choices appears. adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) // Apply the adapter to the spinner. spinner.adapter = adapter }
Java
Spinner spinner = (Spinner) findViewById(R.id.planets_spinner); // Create an ArrayAdapter using the string array and a default spinner layout. ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.planets_array, android.R.layout.simple_spinner_item ); // Specify the layout to use when the list of choices appears. adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // Apply the adapter to the spinner. spinner.setAdapter(adapter);
Metoda createFromResource()
umożliwia utworzenie ArrayAdapter
z tablicy ciągów tekstowych. Trzecim argumentem tej metody jest zasób układu, który określa sposób wyświetlania wybranej opcji w elemencie sterującym kursorem. Platforma udostępnia układ simple_spinner_item
. Jest to układ domyślny, chyba że chcesz zdefiniować własny układ dla wyglądu spinacza.
Wywołaj setDropDownViewResource(int)
, aby określić układ, którego adapter ma używać do wyświetlania listy opcji ładowania.
simple_spinner_dropdown_item
to kolejny układ standardowy zdefiniowany przez platformę.
Zadzwoń pod numer
setAdapter()
,
aby zastosować przejściówkę do urządzenia Spinner
.
Odpowiadanie na wybory użytkowników
Gdy użytkownik wybierze element z menu spinacza, obiekt Spinner
otrzyma zdarzenie on-item-selected.
Aby zdefiniować moduł obsługi zdarzeń wyboru dla spinnera, zaimplementuj interfejs AdapterView.OnItemSelectedListener
i odpowiednią metodę wywołania zwrotnego onItemSelected()
. Oto implementacja interfejsu w Activity
:
Kotlin
class SpinnerActivity : Activity(), AdapterView.OnItemSelectedListener { ... override fun onItemSelected(parent: AdapterView<*>, view: View?, pos: Int, id: Long) { // An item is selected. You can retrieve the selected item using // parent.getItemAtPosition(pos). } override fun onNothingSelected(parent: AdapterView<*>) { // Another interface callback. } }
Java
public class SpinnerActivity extends Activity implements OnItemSelectedListener { ... public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { // An item is selected. You can retrieve the selected item using // parent.getItemAtPosition(pos). } public void onNothingSelected(AdapterView<?> parent) { // Another interface callback. } }
Interfejs AdapterView.OnItemSelectedListener
wymaga metod wywołania zwrotnego onItemSelected()
i onNothingSelected()
.
Określ implementację interfejsu, wywołując metodę setOnItemSelectedListener()
:
Kotlin
val spinner: Spinner = findViewById(R.id.planets_spinner) spinner.onItemSelectedListener = this
Java
Spinner spinner = (Spinner) findViewById(R.id.planets_spinner); spinner.setOnItemSelectedListener(this);
Jeśli zaimplementujesz interfejs AdapterView.OnItemSelectedListener
w interfejsie Activity
lub Fragment
, tak jak w poprzednim przykładzie, możesz przekazać this
jako instancję interfejsu.