Android 具有相同ID的微调器/如何以编程方式添加行

Android 具有相同ID的微调器/如何以编程方式添加行,android,dynamic,android-spinner,android-tablelayout,Android,Dynamic,Android Spinner,Android Tablelayout,我正在开发的应用程序出现问题。我有一个带有启动微调器(选择客户端)的屏幕和一行内有元素的屏幕。当我单击加号按钮时,它会添加更多的行。问题是因为我用XML布局文件添加它们,所以我无法更改ID(或者我可以吗?)。因此,我无法从每一个微调器中获取值,即使是选定的微调器也适用于客户端微调器,但不适用于其他微调器。我在这里得到了屏幕截图和创建第一行/其他行的代码片段 截图: private void startRow() { ArrayAdapter adapterUnits=新的ArrayAdapter

我正在开发的应用程序出现问题。我有一个带有启动微调器(选择客户端)的屏幕和一行内有元素的屏幕。当我单击加号按钮时,它会添加更多的行。问题是因为我用XML布局文件添加它们,所以我无法更改ID(或者我可以吗?)。因此,我无法从每一个微调器中获取值,即使是选定的微调器也适用于客户端微调器,但不适用于其他微调器。我在这里得到了屏幕截图和创建第一行/其他行的代码片段

截图:

private void startRow()
{
ArrayAdapter adapterUnits=新的ArrayAdapter(getApplicationContext(),android.R.layout.simple\u微调器\u下拉菜单\u项);

对于(inti=0;i保持对每个膨胀视图的引用,然后在处理完成的输入数据时迭代这些视图

// View references, as a class property
private ArrayList<View> viewRef = new ArrayList<View>();

View item = inflater.inflate ...
this.viewRef.add(item);
ID应该是唯一的,所以应该使用标记。请参阅

编辑;如果不想手动存储对视图的引用,可以使用父视图的getChildCount()方法迭代它们

for (int i = 0; i < parent.getChildCount(); i++)
{
     View item = (View) parent.getChildAt(i);
}
for(int i=0;i
这似乎很有效,我在ArrayList和屏幕上都有相同数量的微调器。如果我没有使用ID(或者应该使用它们),再问一个问题我应该如何使用onItemSelected listener?这也可以通过标记实现吗?我认为,在这种情况下,您不应该使用ID。当视图膨胀时,应附加Selected listener。视图本身应包含select操作所需的所有信息。
for (View item : this.viewRef)
for (int i = 0; i < parent.getChildCount(); i++)
{
     View item = (View) parent.getChildAt(i);
}