ユーザーがに番号を入力する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
ご協力いただきありがとうございます