Android如何检索动态添加的微调器的值

时间:2011-11-14 04:30:24

标签: android android-spinner

我通过解析XML文件在我的应用程序中动态添加Spinners。

我使用了以下代码

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);

旋转器正确显示但我不知道如何检索所选微调器的值。如果有一个微调器我可以解除,但有多个我该怎么办?

3 个答案:

答案 0 :(得分: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) {

        }
    });
}

答案 1 :(得分:3)

您可以从arraylist中获取微调器的引用,如下所示:

Spinner spn = allspin.get(index);

之后,您只需致电:

即可获得所选项目
spn.getSelectedItemPosition();

答案 2 :(得分:1)

如果您需要多个微调器(我不确定我理解您的用例),那么,当您创建每个微调器时,您还需要创建适当的侦听器。您不必自己检索微调器的值;处理这些选择事件应该在您的听众中完成。也许如果你解释一下你试图做得更好一些,那就更容易帮助......