アプリにスピナーを追加する

スピナーを使用すると、一連の値から 1 つの値をすばやく選択できます。デフォルト 選択中の値を示すスピナーが表示されます。スピナーをタップする ユーザーが選択できる他のすべての値を示すメニューを表示します。

図 1. 利用可能なオプションを示すスピナーのメニュー 使用できます。

レイアウトにスピナーを追加するには、 Spinner これは通常、XML レイアウトで <Spinner> 要素。これを次のようにして示します。 例:

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

スピナーに選択肢のリストを設定するには、 SpinnerAdapterActivity または Fragment ソースコードです。

マテリアルデザインコンポーネントを使う場合は 接触者 プルダウン メニューSpinner に相当します。

スピナーにユーザーの選択内容を入力する

スピナーにはどのソースからの選択肢も指定できますが、 必ず、SpinnerAdapter を通じて提供する必要があります。 ArrayAdapter 選択肢が配列または CursorAdapter 選択肢がデータベース クエリから使用可能な場合。

たとえばスピナーの選択肢が決まっている場合 引数として定義された文字列配列を 文字列リソース file:

<?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 のインスタンスを使用した配列は次のようになります。

KotlinJava
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 を作成できます。「 このメソッドの 3 番目の引数は、レイアウト リソースです。 選択した項目がスピナー コントロールに表示されます。このプラットフォームでは simple_spinner_item できます。カスタム レイアウトがデフォルト レイアウトになります。ただし、 スピナーの外観を設定します

発信 setDropDownViewResource(int) スピナーの選択肢のリストを表示するためにアダプタが使用するレイアウトを指定します。 simple_spinner_dropdown_item プラットフォームによって定義されるもう 1 つの標準レイアウトです。

発信 setAdapter() Spinner にアダプターを適用します。

ユーザーの選択に応答する

ユーザーがスピナーのメニューから項目を選択すると、 Spinner オブジェクト on-item-selected イベントを受け取ります。

スピナーの選択イベント ハンドラを定義するには、 AdapterView.OnItemSelectedListener インターフェースと、対応する onItemSelected() コールバック メソッドを指定します。たとえば、次の例は、 Activity:

KotlinJava
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()onNothingSelected() 呼び出すことができます。

呼び出してインターフェースの実装を指定する setOnItemSelectedListener():

KotlinJava
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 を渡すことができます。