ArrayAdapterクラスを使ってスピナのデータを登録

広告
facebookボタン
googleplusボタン
twitterボタン
ダミーボタン
bloggerボタン

Spinnerクラスのオブジェクトを作成した時に表示されるデータを登録する方法を確認します。「Spinner」クラスで用意されている「setAdapter」メソッドを使います。

setAdapter
public void setAdapter(SpinnerAdapter adapter)
The Adapter is used to provide the data which backs this Spinner. It also 
provides methods to transform spinner items based on their position 
relative to the selected item.

Parameters:
  adapter  The SpinnerAdapter to use for this Spinner

1番目の引数には「android.widget.SpinnerAdapter」インターフェースを実装したクラスのオブジェクトを指定します。SpinnerAdapterインターフェースを実装したクラスはいくつか用意されていますが、今回は「ArrayAdapter」クラスのオブジェクトを使ってみます。

※「ArrayAdapter」クラスの詳細については「ArrayAdapterクラス」を参照して下さい。

具体的には次のように記述します。

private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT; 
private String[] data = {"Apple", "Lemon", "Orange", "Strawberry"}; 

@Override protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    ArrayAdapter<String> arrayAdapter
        = new ArrayAdapter<String>(this, R.layout.rowdata, data);

    Spinner spinner  = new Spinner(this);
    spinner.setAdapter(arrayAdapter);
    setContentView(spinner, new LayoutParams(WC, WC));
}

サンプルプログラム

それでは実際に試してみます。プロジェクトを作成しソースコードを次のように変更しました。

Test02_01.java

package jp.javadrive.android;

import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.view.ViewGroup;
import android.widget.Spinner;
import android.widget.ArrayAdapter;

public class Test02_01 extends Activity
{
    private final int FP = ViewGroup.LayoutParams.FILL_PARENT;
    private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT;

    private String[] data = {"2004", "2005", "2006", "2007"};

    @Override protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        LinearLayout linearLayout = new LinearLayout(this);
        linearLayout.setOrientation(LinearLayout.HORIZONTAL);
        setContentView(linearLayout);

        Spinner spinner  = new Spinner(this);
        linearLayout.addView(spinner, createParam(100, WC));

        ArrayAdapter<String> arrayAdapter
            = new ArrayAdapter<String>(this, R.layout.rowdata, data);

        spinner.setAdapter(arrayAdapter);
    }

    private LinearLayout.LayoutParams createParam(int w, int h){
        return new LinearLayout.LayoutParams(w, h);
    }
}

またレイアウトXMLファイルをリソースとしてプロジェクト内の「res/layout」ディレクトリに配置しました。ファイル名は「rowdata.xml」です。ファイルには次のように記述します。

ArrayAdapterクラスを使ってスピナのデータを登録

<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
/>

ビルド後にエミュレーター上で実行します。

ArrayAdapterクラスを使ってスピナのデータを登録

スピナが作成されて表示されました。エミュレーター上の矢印キーをクリックすると表示データを切り替えることが出来ます。

ArrayAdapterクラスを使ってスピナのデータを登録

( Written by T.buzz.Ikura+ )

Facebook Page