Skip to content

Most visited

Recently visited

navigation

スピナー

スピナーは、一連の値から 1 つの値を素早く選択する手段を提供します。スピナーは、デフォルト状態では、現時点で選択されている値を表示します。 スピナーをタップすると、他の選択可能な値すべてを含むプルダウン メニューが表示されるので、ユーザーはその値の中から新たに 1 つの値を選ぶことができます。

レイアウトにスピナーを追加するには、Spinner オブジェクトを使用します。これは通常、XML レイアウトの <Spinner> 要素で行う必要があります。 次に例を示します。

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

スピナーに選択肢の一覧を設定するには、ActivityFragment のソースコードで SpinnerAdapter を指定する必要があります。

スピナーにユーザーの選択肢を設定する

スピナーに使用する選択肢は、どのようなソースからでも取得できますが、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 を使用し、スピナーに配列を渡すことができます。

Spinner spinner = (Spinner) findViewById(R.id.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 もプラットフォームで定義された標準的なレイアウトです)。

setAdapter() を呼び出して、アダプタに Spinner を適用します。

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

ユーザーがプルダウンからアイテムを選択すると、Spinner オブジェクトが on-item-selected イベントを取得します。

スピナー用の選択のイベント ハンドラを定義するには、AdapterView.OnItemSelectedListener インターフェースと、対応する onItemSelected() コールバック メソッドを実装します。たとえば以下では、Activity にこのインターフェースを実装しています。

public class SpinnerActivity extends Activity implements OnItemSelectedListener {
    ...

    public void onItemSelected(AdapterView<?> parent, View view,
            int pos, long id) {
        // An item was selected. You can retrieve the selected item using
        // parent.getItemAtPosition(pos)
    }

    public void onNothingSelected(AdapterView<?> parent) {
        // Another interface callback
    }
}

AdapterView.OnItemSelectedListener はコールバックメソッド onItemSelected()onNothingSelected() を必要とします。

次に、setOnItemSelectedListener() を呼び出して、インターフェースの実装を指定する必要があります。

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

Activity または FragmentAdapterView.OnItemSelectedListener インターフェースを実装する場合には(上の例など)、インターフェース インスタンスとして this を渡すことが可能です。

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)