当用户在edittext中输入数字时,我的应用程序会创建并显示许多微调器。然后,用户将从每个微调器中选择一个项目,然后单击一个保存按钮。我已经在互联网上看了一眼,却一直无法找到从微调器中检索位置的方法。以下是我创建微调器的方法:
//numStockTanks is the number of spinners to be created
numStockTanks = Integer.parseInt(numOfStockTanks.getText().toString());
// creates all the fields
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> adapterStockTankSize2 = ArrayAdapter.createFromResource(
this, R.array.StockTankSize, android.R.layout.simple_spinner_item);
adapterStockTankSize2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapterStockTankSize2);
spinner.setId(1000 + i);
// 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
} // end getNumberCreateSpinner ()
我尝试了几种不同的方法来获得微调器的位置,但我似乎无法弄明白。这是我现在拥有的:
ArrayList<Integer> mArraySpinner = new ArrayList<Integer>();
for (int i = 0; i < numStockTanks; i++) {
spinner = (Spinner) findViewById(1000 + i);
if (spinner.getSelectedItemPosition() == 1) {
mArraySpinner.add(100);
} else if (spinner.getSelectedItemPosition() == 2) {
mArraySpinner.add(200);
} else if (spinner.getSelectedItemPosition() == 3) {
mArraySpinner.add(210);
} else if (spinner.getSelectedItemPosition() == 4) {
mArraySpinner.add(295);
} else if (spinner.getSelectedItemPosition() == 5) {
mArraySpinner.add(400);
} else mArraySpinner.add(0);
} // end for statement
感谢您的帮助
编辑: 在第一个答案后更新到我的最新尝试
修改编辑: 当我调试行“spinner =(Spinner)findViewById(1000 + i);”它说null,所以我知道我没有正确地指向我的微调器这是我需要帮助的
编辑:碰撞
答案 0 :(得分:1)
您正在使用1000++
作为微调器ID。当你试图让微调器进入时,你可以用100++
检查它。
请更新您在代码中写入的if条件。
将100
更改为1000
我已经更改了代码中的示例代码。
spinner = (Spinner) findViewById(1000 + i);
if (spinner.getId().equals("1000")) {
mArraySpinner.add(spinner.getSelectedItemPosition());
}
else if(....){....}
答案 1 :(得分:0)
我在创建微调器时(在创建微调器的循环内)设置onItemSelectedListener
,并使用它将值设置为一个类字段的数组。
mArraySpinner = new Array<Integer>[numStockTanks];
for(int i = 1; i <= numStockTanks; i++) {
// code to set spinner adapter, etc.
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
mArraySpinner[i] = spinner.getSelectedItemPosition();
}
});