Java 读取动态生成的微调器的值-如何执行此操作?

Java 读取动态生成的微调器的值-如何执行此操作?,java,android,dynamic,spinner,listener,Java,Android,Dynamic,Spinner,Listener,在我的布局中,有许多微调器是通过编程方式生成和添加的: for (int i = 0; i < spinnerCount; i++) { spinner = new Spinner(this); spinner.setId(i); spinner.setAdapter(new MyAdapter(SpinnerLayout.this, R.layout.row, strings)); spinner.setO

在我的布局中,有许多微调器是通过编程方式生成和添加的:

        for (int i = 0; i < spinnerCount; i++) {

        spinner = new Spinner(this);
        spinner.setId(i);
        spinner.setAdapter(new MyAdapter(SpinnerLayout.this, R.layout.row, strings));
        spinner.setOnItemSelectedListener(this);
        spinnerContainer.addView(spinner);
    }
for(int i=0;i
在我想得到每个微调器的值之前,一切似乎都很正常。侦听器仅返回最后一个微调器的值。如何使其读取每个微调器的值?最后,我希望所有的值都存储在一个预定义的数组中(因此,考虑了循环方法
spinnerValues.set(int-position,int-spinnerVal);

这是此线程的后续操作:


此外,我在这里发现了一个非常类似的问题:,但是当尝试应用链接的答案时,我得到一个错误,说我的微调器变量不是final(好吧,在本例中不应该是final…)。有什么提示吗?

你们可以在数组和侦听器循环中保留对每个微调器的引用,并通过它获取每个微调器的值

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id){
 for(Spinner s : spinners){
   // s.getSelectedItem()
 }
}
否则,您可以查看视图组中的所有微调器:

int count = spinnerContainer.getChildCount();
for(int i =0;i<count;i++)
{
    View v = spinnerContainer.getChildAt(i);
    if(v instanceof Spinner)
    {
        ((Spinner)v).getSelectedItem()
    }
}
int count=spinnerContainer.getChildCount();

对于(int i=0;iif你不能使你的微调器成为最终的,你可以使它成为全局的。这样它就可以被访问到一个内部类中。谢谢你的评论,@bakriOnFire。如果我没有决定用数组方法解决这个问题,我会这样做(不过是用它做了第一步)。但是无论如何,我会记住这条建议,以备将来使用。
int count = spinnerContainer.getChildCount();
for(int i =0;i<count;i++)
{
    View v = spinnerContainer.getChildAt(i);
    if(v instanceof Spinner)
    {
        ((Spinner)v).getSelectedItem()
    }
}