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.
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.