2011-11-14 32 views
3

XMLファイルを解析することでSpinnersを動的に追加しています。Android動的に追加されたSpinnerの値を取得する方法

私は

List<Spinner> allspin = new ArrayList<Spinner>(); 
Spinner spin = new Spinner(getParent()); 
allspin.add(spin); 
spin.setLayoutParams(new LayoutParams(
    LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getParent(), 
     android.R.layout.simple_spinner_item, selectval); 
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spin.setAdapter(adapter); 

スピナーが正しく表示されている以下のコードを使用して行っているが、私は選択したスピナーの値を取得する方法がわかりません。スピナーが1つあれば、私はretieveすることができますが、複数の方法がありますか?

答えて

3

あなたはこのようなあなたのArrayListからスピナーの参照を取得することができます:あなたが選択し得ることができることをした後

Spinner spn = allspin.get(index); 

単に電話することによって項目:

spn.getSelectedItemPosition(); 
1

複数のスピナーが必要な場合(私はあなたのユースケースを理解していません)、それぞれを作成するときに、適切なリスナーも作成する必要があります。スピナーの値を自分で取得する必要はありません。これらの選択イベントの処理はリスナーで行う必要があります。多分あなたが何をしようとしているのかを説明すれば、助けがさらに簡単になります。

2

スピナーのIDを動的に設定できます。

そのために、あなたは

spin.setId(i); //if you use i of for loop for creating multipal spin at a tym or you can use a global variable i,incremented by one each time you create a spinner 

を使用することができ、さらに、あなたは、特定のスピナーから値を取得するためにこれらのIDを使用することができます。

例:

for(int i=1;i<4;i++) 
{ 
    Spinner spin=new Spinner(getApplicationCotext()); 
    spin.setId(i); 
    ... 
    //other code 
    ... 
    mLayout.add(spin);//add this spinner to your layout(mLayout is object of your layout in xml) 
} 

for(int i=1;i<4;i++) 
{ 
    Spinner sp=(Spinner)findViewById(i); 
    sp.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, 
        int position, long arg3) { 

      System.out.println(sp.getText().toString());//prints values of a pinner when it is changed/selected 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 

     } 
    }); 
} 
関連する問題