我通过解析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);
旋转器正确显示但我不知道如何检索所选微调器的值。如果有一个微调器我可以解除,但有多个我该怎么办?
答案 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)
如果您需要多个微调器(我不确定我理解您的用例),那么,当您创建每个微调器时,您还需要创建适当的侦听器。您不必自己检索微调器的值;处理这些选择事件应该在您的听众中完成。也许如果你解释一下你试图做得更好一些,那就更容易帮助......