我正在开发一个正在开发的应用程序的问题。我有一个带有起始微调器(选择客户端)的屏幕和带有元素的1行。当我单击加号按钮时,它会添加更多行。问题是因为我用XML布局文件添加它们我无法更改ID(或者我可以吗?)。所以我不能从它们中的每一个中获取值,即使onItemSelected为客户端微调器工作,但对其他工具也没有。我在这里获得了屏幕截图以及用于创建第一行/其他行的代码片段。
屏幕截图:http://dl.dropbox.com/u/9667835/Screenshot_2012-11-14-10-44-38.png
private void startRow()
{
ArrayAdapter<String> adapterUnits = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item);
for(int i=0; i<units_arr.size(); i++)
adapterUnits.add(units_arr.get(i).get("name").toString());
ArrayAdapter<String> adapterVats = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item);
for(int i=0; i<vats_arr.size(); i++)
adapterVats.add(vats_arr.get(i).get("value").toString());
tl = (TableLayout) findViewById(R.id.add_invoice_layout);
LayoutInflater inflater = LayoutInflater.from(this);
View item = inflater.inflate(R.layout.add_invoice_row, tl, false);
Spinner units = (Spinner) item.findViewById(R.id.spinnerUnit);
Spinner vats = (Spinner) item.findViewById(R.id.spinnerVAT);
units.setAdapter(adapterUnits);
vats.setAdapter(adapterVats);
tl.addView(item);
}
答案 0 :(得分:1)
保持对每个膨胀视图的引用,然后在处理完成的输入数据时迭代它们;
// View references, as a class property
private ArrayList<View> viewRef = new ArrayList<View>();
View item = inflater.inflate ...
this.viewRef.add(item);
现在,当要处理数据时,你就这样做了;
for (View item : this.viewRef)
ID应该是唯一的,因此您应该使用标签。见findViewWithTag
编辑;如果您不想手动存储对视图的引用,可以使用父视图的getChildCount()方法迭代它们;
for (int i = 0; i < parent.getChildCount(); i++)
{
View item = (View) parent.getChildAt(i);
}