用户在EditText
中输入一个数字,该应用程序然后以编程方式创建许多微调器。当用户点击我用户界面底部的“保存”按钮时,我无法获取这些微调器的位置以保存它们。
当我尝试使用mArraySpinner.add(spinner.getSelectedItemPosition());
获取位置时如下所示,我在数组中有几个空位,就像侦听器在创建时触发一样,然后它只会保存最后一个元素中的最后一个旋转器位置数组。
以下是我用以下代码创建微调器的代码:
for(int i = 1; i <= numStockTanks; i++) {
TableRow tR = new TableRow(this);
// creates the textView
tV1 = new TextView(this);
tV1.setText("Stock Tank #" + i + " size: ");
// add spinner to row
spinner = new Spinner(this);
ArrayAdapter<CharSequence> adapterStockTankSize = ArrayAdapter.createFromResource(
this, R.array.StockTankSize, android.R.layout.simple_spinner_item);
adapterStockTankSize.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapterStockTankSize);
spinner.setTag(i + 600);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onNothingSelected(AdapterView<?> parent) {}
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
mArraySpinner.add(spinner.getSelectedItemPosition());
}
});
// add the TextView and the editText to the new TableRow
tR.addView(tV1);
tR.addView(spinner);
// add the TableRow to the TableLayout
tL.addView(tR,new TableLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
} // end for statement
感谢您的帮助
答案 0 :(得分:0)
您每次都重新分配spinner
变量,但onItemSelected
方法正在使用此变量。您需要每次重新声明此微调器变量,以便该方法查找唯一的Spinner
对象。
将spinner = new Spinner(this);
更改为final Spinner spinner = new Spinner(this);
,并删除您已经spinner
的任何声明。