スピナー
スピナーは、一連の値から 1 つの値を素早く選択する手段を提供します。スピナーは、デフォルト状態では、現時点で選択されている値を表示します。スピナーをタップすると、他の選択可能な値すべてを含むプルダウン メニューが表示されるので、ユーザーはその値の中から新たに 1 つの値を選ぶことができます。
レイアウトにスピナーを追加するには、Spinner オブジェクトを使用します。これは通常、XML レイアウトの <Spinner> 要素で行う必要があります。次に例を示します。
<Spinner
android:id="@+id/planets_spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
スピナーに選択肢の一覧を設定するには、Activity か Fragment のソースコードで SpinnerAdapter を指定する必要があります。
主なクラスは次のとおりです。
AdapterView.OnItemSelectedListener
スピナーにユーザーの選択肢を設定する
スピナーに使用する選択肢は、どのようなソースからでも取得できますが、SpinnerAdapter によって提供される必要があります。具体的には、選択肢が配列として取得できるなら ArrayAdapter、あるいはデータベース クエリから取得できるなら CursorAdapter になります。
たとえば、スピナーに利用可能な選択肢を事前設定する場合には、それらを文字列リソース ファイル内で文字列配列として定義することができます。
<?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.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 } |
createFromResource() メソッドは、文字列配列から ArrayAdapter を作成することを可能にしています。このメソッドの 3 番目の引数は、選ばれた選択肢がスピナー コントロールでどう見えるかを定義するレイアウト リソースです。simple_spinner_item レイアウトはプラットフォームによって提供され、スピナーの外観に独自のレイアウトを定義する場合を除いては、デフォルトのレイアウトとして使用する必要があります。
次に、setDropDownViewResource(int) を呼び出して、アダプタがスピナーの選択肢の一覧を表示するのに使うレイアウトを指定します(simple_spinner_dropdown_item もプラットフォームで定義された標準的なレイアウトです)。
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 was selected. You can retrieve the selected item using // parent.getItemAtPosition(pos) } override fun onNothingSelected(parent: AdapterView<*>) { // Another interface callback } } |
AdapterView.OnItemSelectedListener には、コールバック メソッド onItemSelected() と onNothingSelected() が必要です。
次に、setOnItemSelectedListener() を呼び出して、インターフェースの実装を指定する必要があります。
KOTLINJAVA val spinner: Spinner = findViewById(R.id.spinner) spinner.onItemSelectedListener = this |
Activity または Fragment で AdapterView.OnItemSelectedListener インターフェースを実装する場合には(上の例など)、インターフェース インスタンスとして this を渡すことができます。
'IT' 카테고리의 다른 글
MySQL Connector/JをAndroidから使ってみる (0) | 2021.07.05 |
---|---|
[Android] CheckBox の配置 (0) | 2021.07.05 |
【PHPMyAdmin】PHPMyAdminでデータをCSVでエクスポートする方法 (0) | 2021.07.03 |
http://www.java2s.com/Open-Source/Android/CatalogAndroid.htm (0) | 2021.07.03 |
androidcalendarview (0) | 2021.07.03 |
댓글