2012年04月23日

Spinnerをカスタムする


前回は基本的なSpinnerを作成しました
スピナーを作成する
今回は前回作成したものをベースにカスタムしていこうと思います
まずは
setDropDownViewResource
を追加してレイアウトを変更してみます
一応前回の復習もかねてソース全体を載せます
MainActivity.java
package blog.test;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.Toast;
 
public class MainActivity extends Activity {
    private String[] mStrings = { "test1", "test2", "test3", "test4" };
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//リニアレイアウトを配置
		 LinearLayout layout = new LinearLayout(this);
		 layout.setOrientation(LinearLayout.VERTICAL);
		 setContentView(layout);
		 //リニアレイアウトにスピナーを追加
		 Spinner spinner = new Spinner(this);
		 layout.addView(spinner);
		 ArrayAdapter adapter = new ArrayAdapter(this,
		 android.R.layout.simple_spinner_item, mStrings);
		 spinner.setAdapter(adapter);
		 
		 //スピナーのレイアウト変更
		 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		 spinner.setSelection(1);
		
		 //スピナーのクリックイベントを取得する
		 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
			//Itemが選択された時
			public void onItemSelected(AdapterView parent,
				View view, int position, long id) {
				//parentのspinnerを指定
				Spinner spinner = (Spinner) parent;
				//選択されたitemを取得
			    String item = (String) spinner.getSelectedItem();
			    //Toast表示
			    Toast.makeText(MainActivity.this,
			            String.format("%sが選択されました。", item),
			            Toast.LENGTH_SHORT).show();
            }
			//何も選択されなかったとき
            public void onNothingSelected(AdapterView parent) {
                Toast.makeText(MainActivity.this,
                        "何も選択されませんでした", Toast.LENGTH_SHORT).show();
            }
        });
    }
}
これを実行すると以下のようにスピナーのレイアウトが変更されます
device90.png

ちなみにspinner.setSelection(1)の部分はスピナーの初期値(+1)を変更するものです
今回は“1”なためtest2が初期値になっています(0のとき項目1が選択されている)


次にspinner.setPromptを追加してみます
これはSpinnerの題名を表示させるものです
追加部分を以下のように変更してみます
		 //スピナーのレイアウト変更
		 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		 spinner.setSelection(2);
		 spinner.setPrompt("test一覧");
これを実行してみると・・・
device91.png
表題が表示されるようになりました



スポンサードリンク

posted by kenken at 16:41 | Comment(0) | TrackBack(0) | ウィジェット スピナー | このブログの読者になる | 更新情報をチェックする
2012年04月16日

スピナーを作成する


スピナー(Spinner)はリストから1つの項目を選択させるウィジェットです
スピナーを使用するには基本的には
1.スピナーを配置する
2.内容を設定する
3.クリックイベントを取得する
の3つの設定を行います

スピナーを配置する
今回はMainActivity.javaを変更して動的にスピナーを配置したいと思います
		//リニアレイアウトを配置
		 LinearLayout layout = new LinearLayout(this);
		 layout.setOrientation(LinearLayout.VERTICAL);
		 setContentView(layout);
		 //リニアレイアウトにスピナーを追加
		 Spinner spinner = new Spinner(this);
		 layout.addView(spinner);
レイアウトとスピナーを新規に作成し
layout.addView(spinner);”でレイアウトにスピナーを挿入しています

内容を設定する
次にスピナーの内容を設定したいと思います
スピナーで選択できる項目を
{ "test1", "test2", "test3", "test4" }の4つにしたいと思います
スピナーのレイアウトは今回はもともとAndroidに入っている
R.layout.simple_spinner_item
というものを使いたいと思います
これはシンプルなデザインなので使用頻度は低いと思いますがw今回は導入なのでこれで行きたいと思います

クリックイベントを取得する
クリックイベントを取得するにはsetOnItemSelectedListenerを使用します
OnItemSelectedListenerはリスト項目が選択された時に実行されるイベントリスナーです
リスト項目が選択された時ににはonItemSelected
リスト項目が選択されなかった時にはonNothingSelectedがそれぞれ実行されます

サンプルプログラム
選択したitemをトーストで表示させるようにしました
MainActivity.java
package blog.test;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.Toast;
 
public class MainActivity extends Activity {
    private String[] mStrings = { "test1", "test2", "test3", "test4" };
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//リニアレイアウトを配置
		 LinearLayout layout = new LinearLayout(this);
		 layout.setOrientation(LinearLayout.VERTICAL);
		 setContentView(layout);
		 //リニアレイアウトにスピナーを追加
		 Spinner spinner = new Spinner(this);
		 layout.addView(spinner);
		 ArrayAdapter adapter = new ArrayAdapter(this,
		 android.R.layout.simple_spinner_item, mStrings);
		 spinner.setAdapter(adapter);
		
		//スピナーのクリックイベントを取得する
		 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
			//Itemが選択された時
			public void onItemSelected(AdapterView parent,
				View view, int position, long id) {
				//parentのspinnerを指定
				Spinner spinner = (Spinner) parent;
				//選択されたitemを取得
			    String item = (String) spinner.getSelectedItem();
			    //Toast表示
			    Toast.makeText(MainActivity.this,
			            String.format("%sが選択されました。", item),
			            Toast.LENGTH_SHORT).show();
            }
			//何も選択されなかったとき
            public void onNothingSelected(AdapterView parent) {
                Toast.makeText(MainActivity.this,
                        "何も選択されませんでした", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

実行結果は以下のようになります

まずはスピナーだけが表示されます
device87.png

スピナーをタッチすると選択画面が出てきます
device88.png

たとえばtest3を選択すると・・・
device89.png
トースト表示が出てきます

なお何も選択されないというonNothingSelectedは今回は実行されませんww
スポンサードリンク

posted by kenken at 10:28 | Comment(0) | TrackBack(0) | ウィジェット スピナー | このブログの読者になる | 更新情報をチェックする