3

XML ファイルを解析して、アプリケーションにスピナーを動的に追加しています。

以下のコードを使用して実行しました

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つあれば回収できますが、スピナーが複数ある場合はどうすればいいですか?

4

3 に答える 3

3

次のように、配列リストからスピナーの参照を取得できます。

Spinner spn = allspin.get(index);

その後、次のように呼び出すだけで、選択したアイテムを取得できます。

spn.getSelectedItemPosition();
于 2011-11-14T04:42:27.507 に答える
3

スピナーの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) {

        }
    });
}
于 2011-11-14T04:40:03.947 に答える
1

複数のスピナーが必要な場合 (ユース ケースを理解しているかどうかはわかりません)、各スピナーを作成するときに、適切なリスナーも作成する必要があります。自分でスピナーの値を取得する必要はありません。これらの選択イベントの処理は、リスナーで行う必要があります。おそらく、もう少しうまくやろうとしていることを説明すれば、助けやすくなるでしょう...

于 2011-11-14T04:39:42.907 に答える