3

我通过解析 XML 文件在我的应用程序中动态添加 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);

微调器显示正确,但我不知道如何检索选定微调器的值。如果有一个微调器我可以检索,但有多个我应该怎么做?

4

3 回答 3

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 回答
3

您可以像这样从数组列表中获取微调器的参考:

Spinner spn = allspin.get(index);

之后,您只需调用以下命令即可获取所选项目:

spn.getSelectedItemPosition();
于 2011-11-14T04:42:27.507 回答
1

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

于 2011-11-14T04:39:42.907 回答