在我的布局中,生成并以编程方式添加了许多微调器:
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);
}
在我想获得每个微调器的值之前,一切似乎都能正常工作。侦听器仅返回最后一个微调器的值。如何让它读取每个微调器的值?最后,我想将所有值存储在预定义的数组中(因此,循环方法spinnerValues.set(int position, int spinnerVal);
将被考虑在内。
以下是此帖子的后续内容:Multiple spinners in an activity...
此外,我在这里发现了一个非常类似的问题:How to retrieve value of Dynamically added Spinner...,但在尝试应用链接的答案时,我收到一条错误,说我的微调器变量不是最终的(好吧,在这种情况下不应该...)。任何提示,伙计们?
答案 0 :(得分:1)
您可以在数组中和侦听器中循环引用每个Spinner,并为每个Spinner获取每个Spinner的值。
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id){
for(Spinner s : spinners){
// s.getSelectedItem()
}
}
您还可以通过比较ID来检查哪一个已被更改。
parent.getId() == s.getId()
否则,您可以查看ViewGroup中的所有微调器:
int count = spinnerContainer.getChildCount();
for(int i =0;i<count;i++)
{
View v = spinnerContainer.getChildAt(i);
if(v instanceof Spinner)
{
((Spinner)v).getSelectedItem()
}
}
最后,您还可以为每个侦听器实例化不同的侦听器。