Android Spinner创建运行事件

时间:2016-02-11 12:59:39

标签: android loops events spinner

我试图搜索答案,但很难找到正确的搜索字词。 所以我的问题是我正在以编程方式创建一个带有2个微调器的TableRow,并选择它。当我在该微调器上选择一些东西时,它会在下面创建另一行,但设计相同,但在微调器上有不同的值。我的问题是每当我创建第二行时,它就会在循环中运行onItemSelect。我相信循环正在发生,因为事件正在生成的新微调器上运行。有没有办法在我创建时不运行它,但只有当我选择它上面的选项时才会运行?

不知道你需要从代码中得到什么,但我会在这里放一些其他的东西只是要求我尽快发布。

我创建了微调器:

spin1 = new Spinner(this);
spin1.setLayoutParams(new TableRow.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));
spin1.setOnItemSelectedListener(this);

在项目选择上我添加:

TableRow tableRowNow = (TableRow) parent.getParent();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                            this, android.R.layout.simple_spinner_item,            indiceSpinnerArray1);
                        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner sItems = (Spinner) tableRowNow.getChildAt(0);
sItems.setAdapter(adapter);
sItems.setSelection(position);


ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(
                            this, android.R.layout.simple_spinner_item,     spinnerArray2);
                        adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner sItems11 = (Spinner) tableRowNow.getChildAt(1);
sItems11.setAdapter(adapter1);
sItems11.setSelection(1);
sItems11.setEnabled(false);

newRow();

TableLayout tabLayoutTemp1 = (TableLayout) tableRowNow.getParent();
int numRowTemp = tabLayoutTemp1.indexOfChild(tableRowNow);

TableRow secondTabRow = (TableRow) tabLayoutTemp1.getChildAt(numRowTemp + 1);
ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(
                            this, android.R.layout.simple_spinner_item,     spinnerArray3);
                        adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner sItems2 = (Spinner) secondTabRow.getChildAt(1);
sItems2.setAdapter(adapter2);

然后它只是不断创建新行到无穷大......任何帮助?

谢谢。

1 个答案:

答案 0 :(得分:0)

你的setSelection()调用可能正在调用onItemSelect事件,从而创建onItemSelect调用的无限循环,它也无限地调用newRow()。

从您的代码中不清楚这是否是实际情况,请提供* .xml布局或至少创建微调器的Java代码的完整部分并设置onItemSelectListener。