2012-08-12 8 views
52

どのようにプログラムからJavaコードからスピナーを埋めますか?Android:JavaコードからSpinnerをプログラムで書き込む

<Spinner 
    android:id="@+id/consultation_deseases" 
    android:layout_width="@dimen/bigSpinnerWidth" 
    android:layout_height="@dimen/bigSpinnerHeight" 
    android:prompt="@string/disease_prompt" /> 

私はアダプタを作成し、アイテムを追加する必要があり、Javaコード付き:

は、私はこのようなレイアウトでスピナーを持っています。また

答えて

151
// you need to have a list of data that you want the spinner to display 
List<String> spinnerArray = new ArrayList<String>(); 
spinnerArray.add("item1"); 
spinnerArray.add("item2"); 

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
    this, android.R.layout.simple_spinner_item, spinnerArray); 

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
Spinner sItems = (Spinner) findViewById(R.id.spinner1); 
sItems.setAdapter(adapter); 

あなたはここでは、この

String selected = sItems.getSelectedItem().toString(); 
if (selected.equals("what ever the option was")) { 
} 
13

ような何かを行うことができ、選択されたものを見つけるために、完全にプログラム的に例です:スピナーのinit

  • String Listを使用してデータを入力します。
  • スピナーのサイズを変更し、それをマイビューに追加します。
  • format Spinnerフォント(フォントサイズ、色、パディング)。
  • スピナーをクリアします。
  • スピナーに新しい値を追加します。
  • スピナーを再描画します。

    Spinner varSpinner; 
    List<String> varSpinnerData; 
    
    float varScaleX; 
    float varScaleY;  
    

    Aを - initと(varRootは私のメインの活動へのポインタである)スピナーをレンダリング::私は次のクラスを使用しています

はvarsの

public void renderSpinner() { 


    List<String> myArraySpinner = new ArrayList<String>(); 

    myArraySpinner.add("red"); 
    myArraySpinner.add("green"); 
    myArraySpinner.add("blue");  

    varSpinnerData = myArraySpinner; 

    Spinner mySpinner = new Spinner(varRoot);    

    varSpinner = mySpinner; 

    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(varRoot, android.R.layout.simple_spinner_item, myArraySpinner); 
    spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // The drop down vieww 
    mySpinner.setAdapter(spinnerArrayAdapter); 

B - サイズを変更し、私のビューにスピナーを追加してください:

FrameLayout.LayoutParams myParamsLayout = new FrameLayout.LayoutParams(
      FrameLayout.LayoutParams.MATCH_PARENT, 
      FrameLayout.LayoutParams.WRAP_CONTENT); 
    myParamsLayout.gravity = Gravity.NO_GRAVITY;    

    myParamsLayout.leftMargin = (int) (100 * varScaleX); 
    myParamsLayout.topMargin = (int) (350 * varScaleY);    
    myParamsLayout.width = (int) (300 * varScaleX);; 
    myParamsLayout.height = (int) (60 * varScaleY);; 


    varLayoutECommerce_Dialogue.addView(mySpinner, myParamsLayout); 

C - Make the Clic kハンドラを使ってフォントを設定します。

mySpinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int myPosition, long myID) { 

      Log.i("renderSpinner -> ", "onItemSelected: " + myPosition + "/" + myID); 

      ((TextView) parentView.getChildAt(0)).setTextColor(Color.GREEN); 
      ((TextView) parentView.getChildAt(0)).setTextSize(TypedValue.COMPLEX_UNIT_PX, (int) (varScaleY * 22.0f)); 
      ((TextView) parentView.getChildAt(0)).setPadding(1,1,1,1); 


     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parentView) { 
      // your code here 
     } 

    }); 

} 

D - 新しいデータでスピナーを更新します。

private void updateInitSpinners(){ 

    String mySelected = varSpinner.getSelectedItem().toString(); 
    Log.i("TPRenderECommerce_Dialogue -> ", "updateInitSpinners -> mySelected: " + mySelected); 


    varSpinnerData.clear(); 

    varSpinnerData.add("Hello World"); 
    varSpinnerData.add("Hello World 2"); 

    ((BaseAdapter) varSpinner.getAdapter()).notifyDataSetChanged(); 
    varSpinner.invalidate(); 
    varSpinner.setSelection(1); 

} 

}

私はupdateInitSpinnersに解決することができていない何を、varSpinner.setSelection(0)を行うことです。カスタムフォント設定を自動的に有効にします。

UPDATE:

この "醜い" ソリューションはvarSpinner.setSelectionを解く(0);問題が、私はそれで非常に満足していない:

private void updateInitSpinners(){ 

    String mySelected = varSpinner.getSelectedItem().toString(); 
    Log.i("TPRenderECommerce_Dialogue -> ", "updateInitSpinners -> mySelected: " + mySelected); 


    varSpinnerData.clear(); 

    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(varRoot, android.R.layout.simple_spinner_item, varSpinnerData); 
    spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    varSpinner.setAdapter(spinnerArrayAdapter); 


    varSpinnerData.add("Hello World"); 
    varSpinnerData.add("Hello World 2"); 

    ((BaseAdapter) varSpinner.getAdapter()).notifyDataSetChanged(); 
    varSpinner.invalidate(); 
    varSpinner.setSelection(0); 

} 

}

は、この情報がお役に立てば幸いです......

関連する問題