スピナーの利用 (Spinnerコントロールの利用) - Android

AndroidアプリケーションでSpinnerコントロールを利用します。

実装例

プロジェクトの設定

Androidアプリケーションプロジェクトを新規作成します。
  • Project name: SimpleSpinner
  • Build Target: Android 2.1-update1
  • Application name: Simple Spinner Application
  • Package name: iPentec.SimpleSpinner
  • Activity: SimpleSpinner

UI

アプリケーション作成後、main.xmlを開きます。下図のデザイナ画面が表示されます。

デザイナで左側の[Palette]から[Spinner]コントロールをデザイン画面にドラッグ&ドロップします。デザイナ画面にSpinenrコントロールが配置されます。(下図画面参照)


string.xmlにSpinnerコントロールに表示する要素を設定します。今回はSpnnerコントロールに、Penguin, Duck, Gooseの3つの要素を表示します。string.xmlを以下の通りに編集しました。
string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, SimpleSpinner!</string>
    <string name="app_name">Simple Spinner Application</string>

    <string-array name="item_label">
        <item>Penguin</item>
        <item>Duck</item>
        <item>Goose</item>
    </string-array>
</resources>

コード

続いてコードを編集します。SimpleSpinner.javaファイルを以下の通りに編集しました。 initSpinners()メソッドを実装し、onCreateメソッドから呼び出しています。
SimpleSpinner.java
package iPentec.SimpleSpinner;

import android.app.Activity;
import android.os.Bundle;
import android.widget.*;

public class SimpleSpinner extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        initSpinners();
    }
    
    private void initSpinners() {
    	Spinner spinner1 = (Spinner)findViewById(R.id.spinner1);
    	
    	String[] labels = getResources().getStringArray(R.array.item_label);
    	ArrayAdapter<String> adapter
          = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, labels);
    	spinner1.setAdapter(adapter);
    }
}

解説

onCreate()メソッドからinitSpinners()メソッドを呼び出しています。

デザイナで定義したspnner1コントロールを取得しています。
Spinner spinner1 = (Spinner)findViewById(R.id.spinner1);

string.xmlで定義した"item_lael"を読み出し文字列配列(String[])に格納します。
String[] labels = getResources().getStringArray(R.array.item_label);

ArrayAdapterクラスのインスタンスを作成し、文字列配列(String[])の内容を作成したArrayAdapterインスタンスに反映させます。
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, labels);

Spinnerコントロールに先ほど作成したArrayAdapterクラスのインスタンスを適用します。
spinner1.setAdapter(adapter);

アプリケーションの実行

アプリケーションを実行します。実行すると下図の画面が表示されます。


Spinnerコントロールをクリックすると下図の画面に切り替わり、要素を選択できます。今回はGooseの要素をクリックして選択してみます。


Spinnerコントロールの表面の文字列が"Goose"に変わりました。


参考

main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<Spinner android:layout_height="wrap_content" android:id="@+id/spinner1" android:layout_width="fill_parent"></Spinner>
</LinearLayout>
著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2024-01-04
作成日: 2011-02-24
iPentec all rights reserverd.