При создании каждого нового EditText
вы генерируете идентификаторы на setId()
, но я не понимаю, как они будут полезны в вашем коде.Вместо этого установите тег EditText
следующим образом:
ed.setTag(allEds.size());
и добавьте его в список:
allEds.add(ed);
Теперь в каждом теге EditText
вы сохранили егопорядковый номер (на основе нуля) в списке, и когда вы хотите сохранить его значение в SharedPreferences
, вы можете сделать:
SharedPreferences.Editor editor = getPreferences(Context.MODE_PRIVATE).edit();
editor.putString("key" + et.getTag().toString(), ed.getText().toString());
editor.commit();
или с помощью цикла по всем элементам в списке:
for (EditText ed : allEds) {
editor.putString("key" + et.getTag().toString(), ed.getText().toString());
}
editor.commit();
Таким образом, вы сохранили все текстовые значения EditTexts с такими клавишами, как:
"key0", "key1", "key2",...
Edit Вы хотите открыть другое действие и передать ему список:
Intent intent = new Intent(this, AnotherActivity.class);
ArrayList<String> allTexts = new ArrayList<>();
for (EditText e : allEds) {
allTexts.add(e.getText().toString())
}
intent.putExtra("Text", (Serializable) allTexts);
и в других видах деятельности onCreate()
:
ArrayList<String> list = (ArrayList<String>) getIntent().getSerializableExtra("Texts");
Edit2 Замените код в btnSave.setOnClickListener()
и строки ниже на этот код:
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
SharedPreferences.Editor editor = getPreferences(Context.MODE_PRIVATE).edit();
for (EditText ed : allEds) {
editor.putString("key" + ed.getTag().toString(), ed.getText().toString());
}
editor.commit();
Intent intent = new Intent(this, MainActivity.class);
ArrayList<String> allTexts = new ArrayList<>();
for (EditText e : allEds) {
allTexts.add(e.getText().toString());
}
intent.putExtra("Text", (Serializable) allTexts);
startActivity(intent);
}
});