Advertisement
fslasht

SpinnerUty.java

Jun 22nd, 2013
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 3.33 KB | None | 0 0
  1. import android.content.Context;
  2. import android.view.View;
  3. import android.widget.AdapterView;
  4. import android.widget.ArrayAdapter;
  5. import android.widget.AdapterView.OnItemSelectedListener;
  6. import android.widget.Spinner;
  7.  
  8. /**
  9.  * Spinner初期化便利クラス
  10.  * @param <LavelT> ラベルの型
  11.  * @param <ValueT>  値の型
  12.  */
  13. public class SpinnerUty<LavelT,ValueT> {
  14.  
  15.     /**
  16.      * 指定スピナーを初期化する
  17.      * @param context
  18.      * @param spinner   初期化対象のスピナー
  19.      * @param lavels    ラベルの配列
  20.      * @param initialIndex  初期選択値(ラベル配列のインデックス)/ -1:非選択状態
  21.      * @param listener  選択時に呼ばれるリスナー
  22.      */
  23.     void initSpinner( Context context , Spinner spinner ,final  LavelT[] lavels ,  int initialIndex , final OnItemSelectedListenerWithLabel<LavelT> listener )
  24.     {
  25.         ArrayAdapter<LavelT> adapter = new ArrayAdapter<LavelT>(context, android.R.layout.simple_spinner_item , lavels);
  26.         spinner.setAdapter(adapter);
  27.         if ( initialIndex>=0 )  spinner.setSelection(initialIndex);
  28.         spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
  29.             @Override
  30.             public void onItemSelected(AdapterView<?> parent, View view,    int position, long id) {
  31.                 listener.onItemSelected( position , lavels[position]);
  32.             }
  33.             @Override
  34.             public void onNothingSelected(AdapterView<?> parent) {
  35.             }
  36.         });
  37.     }
  38.  
  39.     /**
  40.      * @param context
  41.      * @param spinner
  42.      * @param spinner   初期化対象のスピナー
  43.      * @param lavels    ラベルの配列
  44.      * @param values    値の配列
  45.      * @param initialValue  初期値(値の配列に存在しない値またはnullの場合は非選択状態)
  46.      * @param listener  選択時に呼ばれるリスナー
  47.      */
  48.     void initSpinner(  Context context , Spinner spinner , final LavelT[] lavels , final ValueT[] values , ValueT initialValue  , final OnItemSelectedListenerWithLabelAndValue<LavelT,ValueT> listener )
  49.     {
  50.         ArrayAdapter<LavelT> adapter = new ArrayAdapter<LavelT>(context, android.R.layout.simple_spinner_item , lavels);
  51.         spinner.setAdapter(adapter);
  52.         int initialIndex=-1;
  53.         for ( int i=0; i<values.length; i++ ) {
  54.             if ( values[i].equals(initialValue)) {
  55.                 initialIndex = i;
  56.                 break;
  57.             }
  58.         }
  59.         if ( initialIndex>=0 )  spinner.setSelection(initialIndex);
  60.         spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
  61.             @Override
  62.             public void onItemSelected(AdapterView<?> parent, View view,    int position, long id) {
  63.                 listener.onItemSelected( position , lavels[position] ,  values[position]);
  64.             }
  65.             @Override
  66.             public void onNothingSelected(AdapterView<?> parent) {
  67.             }
  68.         });
  69.     }
  70.  
  71.  
  72.     // スピナー選択時に呼ばれるリスナーのインターフェース
  73.     interface OnItemSelectedListenerWithLabel<LavelT> {
  74.         /**
  75.          * @param index 選択されたリストにインデックス
  76.          * @param lavel 選択されたラベル
  77.          */
  78.         public void onItemSelected( int index, LavelT lavel );
  79.     }
  80.     interface OnItemSelectedListenerWithLabelAndValue<LavelT,ValueT> {
  81.         /**
  82.          * @param index 選択されたリストにインデックス
  83.          * @param lavel 選択されたラベル
  84.          * @param value 選択された値
  85.          */
  86.         public void onItemSelected( int index ,  LavelT lavel , ValueT value  );
  87.     }
  88.  
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement