Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import android.content.Context;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.ArrayAdapter;
- import android.widget.AdapterView.OnItemSelectedListener;
- import android.widget.Spinner;
- /**
- * Spinner初期化便利クラス
- * @param <LavelT> ラベルの型
- * @param <ValueT> 値の型
- */
- public class SpinnerUty<LavelT,ValueT> {
- /**
- * 指定スピナーを初期化する
- * @param context
- * @param spinner 初期化対象のスピナー
- * @param lavels ラベルの配列
- * @param initialIndex 初期選択値(ラベル配列のインデックス)/ -1:非選択状態
- * @param listener 選択時に呼ばれるリスナー
- */
- void initSpinner( Context context , Spinner spinner ,final LavelT[] lavels , int initialIndex , final OnItemSelectedListenerWithLabel<LavelT> listener )
- {
- ArrayAdapter<LavelT> adapter = new ArrayAdapter<LavelT>(context, android.R.layout.simple_spinner_item , lavels);
- spinner.setAdapter(adapter);
- if ( initialIndex>=0 ) spinner.setSelection(initialIndex);
- spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
- listener.onItemSelected( position , lavels[position]);
- }
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
- }
- });
- }
- /**
- * @param context
- * @param spinner
- * @param spinner 初期化対象のスピナー
- * @param lavels ラベルの配列
- * @param values 値の配列
- * @param initialValue 初期値(値の配列に存在しない値またはnullの場合は非選択状態)
- * @param listener 選択時に呼ばれるリスナー
- */
- void initSpinner( Context context , Spinner spinner , final LavelT[] lavels , final ValueT[] values , ValueT initialValue , final OnItemSelectedListenerWithLabelAndValue<LavelT,ValueT> listener )
- {
- ArrayAdapter<LavelT> adapter = new ArrayAdapter<LavelT>(context, android.R.layout.simple_spinner_item , lavels);
- spinner.setAdapter(adapter);
- int initialIndex=-1;
- for ( int i=0; i<values.length; i++ ) {
- if ( values[i].equals(initialValue)) {
- initialIndex = i;
- break;
- }
- }
- if ( initialIndex>=0 ) spinner.setSelection(initialIndex);
- spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
- listener.onItemSelected( position , lavels[position] , values[position]);
- }
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
- }
- });
- }
- // スピナー選択時に呼ばれるリスナーのインターフェース
- interface OnItemSelectedListenerWithLabel<LavelT> {
- /**
- * @param index 選択されたリストにインデックス
- * @param lavel 選択されたラベル
- */
- public void onItemSelected( int index, LavelT lavel );
- }
- interface OnItemSelectedListenerWithLabelAndValue<LavelT,ValueT> {
- /**
- * @param index 選択されたリストにインデックス
- * @param lavel 選択されたラベル
- * @param value 選択された値
- */
- public void onItemSelected( int index , LavelT lavel , ValueT value );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement