Я создал EditText
s динамически на основе нажатия кнопки и использует List для получения ввода от EditText
s. Я попытался сохранить его как строки внутри, и он сохраняет только часть значений. Это мой код.
Это добавление новых EditText
s:
List<EditText> allElem = new ArrayList<EditText>();//utk save
public void addLine() {
LinearLayout ll = (LinearLayout) findViewById(R.id.layout_dynamic);
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
//add text view desc
TextView tv=new TextView(this);
tv.setLayoutParams(p);
tv.setText("Description");
ll.addView(tv);
// add edittext
EditText et = new EditText(this);
et.setLayoutParams(p);
ll.addView(et);
et.setHint("Enter expenses description");
allElem.add(et);//add dlm list allElem
//add text view spend
TextView tv1=new TextView(this);
tv1.setLayoutParams(p);
tv1.setText("Spending (RM)");
ll.addView(tv1);
// add edittext
EditText et1 = new EditText(this);
et1.setLayoutParams(p);
ll.addView(et1);
et1.setHint("Enter your spending in RM");
et1.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
allEd.add(et1);//add dlm list allEd
allElem.add(et1);//add dlm list allElem
//add text view spend
TextView tv2=new TextView(this);
tv2.setLayoutParams(p);
tv2.setText("Extra Note");
ll.addView(tv2);
// add edittext
EditText et2 = new EditText(this);
et2.setLayoutParams(p);
ll.addView(et2);
et2.setHint("Enter your note (optional)");
allElem.add(et2);//add dlm list allElem
}
Я не могу получить все значения из списка. Только 3 последних значения из списка сохраняются.
String data, dataText;
public String file = "expensesrecord";
public void save(){
for (int i=0;i<allElem.size();i++){
EditText descr = allElem.get(i);
dataText="Description: " + descr.getText().toString() + "\n";
i++;
EditText spendi = allElem.get(i);
dataText +="Spending: RM " + spendi.getText().toString() + "\n";
i++;
EditText note = allElem.get(i);
dataText +="Extra Note: " + note.getText().toString() + "\n\n";
}
data="Date: " + tvDate.getText().toString() + "\n" + "Total Expenses: " + tvDisplayResult.getText().toString() + "\n";
data+=dataText;
try {
FileOutputStream fOut = openFileOutput(file, Context.MODE_APPEND);
fOut.write(data.getBytes());
fOut.close();
Toast.makeText(getBaseContext(),"Record saved",Toast.LENGTH_SHORT).show();
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Ожидаемый результат должен быть:
Дата: 01.12.2009
Всего расходов: 30
Описание: обед
Расходы: 15
Примечание: 2 человека
Описание изделия: ужин
Расходы: 30
Примечание: 3 человека
Однако фактический результат показывает только:
Дата: 01.12.2009
Всего расходов: 30
Описание изделия: ужин
Расходы: 30
Примечание: 3 человека