앱에 스피너 추가

스피너는 값 집합에서 하나의 값을 선택할 수 있는 빠른 방법을 제공합니다. 기본값 스피너에 현재 선택된 값이 표시됩니다. 스피너 탭하기 사용자가 선택할 수 있는 다른 모든 값을 보여주는 메뉴를 표시합니다.

그림 1. 사용 가능한 메뉴가 표시된 스피너 메뉴 값으로 사용됩니다.

다음과 같이 레이아웃에 스피너를 추가할 수 있습니다. Spinner 객체를 만들 수 있습니다. 이 작업은 일반적으로 XML 레이아웃에서 <Spinner> 요소 이 내용은 다음에 나와 있습니다. 예:

<Spinner
    android:id="@+id/planets_spinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

스피너를 선택 목록으로 채우려면 SpinnerAdapterActivity 또는 <ph type="x-smartling-placeholder">Fragment</ph> 소스 코드

Material Design 구성요소를 사용하는 경우 노출 드롭다운 메뉴Spinner와 같습니다.

사용자가 선택할 수 있는 스피너 채우기

스피너에 대해 제공하는 선택은 모든 소스에서 가져올 수 있지만 다음과 같은 SpinnerAdapter를 통해 제공해야 합니다. ArrayAdapter 선택 항목이 배열 또는 <ph type="x-smartling-placeholder">CursorAdapter</ph> 선택 항목을 사용할 수 있는지 확인할 수 있습니다

예를 들어 스피너에 사용할 수 있는 선택 항목이 미리 결정되어 있다면 에 정의된 문자열 배열을 제공하여 문자열 리소스 파일에 저장합니다.

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

이와 같은 배열을 사용하면 Activity 또는 Fragment는 스피너에 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
}

자바

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);

createFromResource() 메서드를 사용하면 문자열 배열에서 ArrayAdapter를 만들 수 있습니다. 이 이 메서드의 세 번째 인수는 스피너 컨트롤에 표시됩니다. 이 플랫폼은 simple_spinner_item 있습니다. 이 레이아웃은 기본 레이아웃으로, 확인할 수 있습니다.

전화걸기 setDropDownViewResource(int) 를 사용하여 어댑터가 스피너 선택 항목 목록을 표시하는 데 사용하는 레이아웃을 지정합니다. simple_spinner_dropdown_item 플랫폼에서 정의한 또 다른 표준 레이아웃입니다.

전화걸기 setAdapter() Spinner에 어댑터를 적용합니다.

사용자 선택에 응답

사용자가 스피너의 메뉴에서 항목을 선택하면 객체 Spinner개 항목 선택 이벤트를 수신합니다.

스피너의 선택 이벤트 핸들러를 정의하려면 AdapterView.OnItemSelectedListener 드림 해당하는 onItemSelected() 콜백 메서드를 호출합니다. 예를 들어 다음은 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.
    }
}

자바

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

AdapterView.OnItemSelectedListener 인터페이스에는 다음이 필요합니다. onItemSelected() 및 <ph type="x-smartling-placeholder">onNothingSelected()</ph> 콜백 메서드를 지원합니다.

다음을 호출하여 인터페이스 구현을 지정합니다. setOnItemSelectedListener():

Kotlin

val spinner: Spinner = findViewById(R.id.planets_spinner)
spinner.onItemSelectedListener = this

자바

Spinner spinner = (Spinner) findViewById(R.id.planets_spinner);
spinner.setOnItemSelectedListener(this);

AdapterView.OnItemSelectedListener를 구현하는 경우 다음과 같이 Activity 또는 Fragment 인터페이스를 사용합니다. 이전 예에서 this를 인터페이스 인스턴스로 전달할 수 있습니다.