1

用户在 中输入一个数字EditText,然后应用程序以编程方式创建那么多微调器。当用户单击 UI 底部的“保存”按钮时,我无法获取这些微调器的位置以保存它们。

当我尝试通过以下方式获取位置时: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

感谢您的帮助

4

1 回答 1

0

spinner每次都在重新分配变量,但该onItemSelected方法正在使用此变量。您需要每次重新声明此微调器变量,以便该方法正在寻找一个唯一的Spinner对象。

更改spinner = new Spinner(this);final Spinner spinner = new Spinner(this);,并删除spinner您已经拥有的任何声明。

于 2012-07-30T22:25:41.937 回答