Прежде всего, я хотел бы познакомить вас с моим приложением, поэтому у вас есть лучшая точка зрения, что мне нужно. У меня есть база данных с тремя таблицами days
, weeks
, weekdays
и в одном упражнении я извлекаю все элементы из таблицы дней по выбранной неделе, но я не знаю, как установить текст всем членам этого класса. Я покажу вам в следующем примере, что я хочу.Как установить текст для нескольких EditTexts в Android
Я достиг установил текст для нескольких EditTexts, но со многими повторениями. Я хочу сделать это с помощью массивов и циклов. Мне удалось инициализировать все EditTexts, используя массив и цикл, но я не знаю, как реализовать текст установки для всех EditTexts.
Это повторение части:
for (int i = 0; i < days.size(); i++) {
// Monday
Day day1 = days.get(0);
etNasteMonday.setText(String.valueOf(day1.getNaste()));
etInsulinMondayBeforeBreak.setText(String.valueOf(day1.getInsulinBeforeBreak()));
etDiabetesMondayAfterBreak.setText(String.valueOf(day1.getDiabetesAfterBreak()));
etDiabetesMondayBeforeLaunch.setText(String.valueOf(day1.getDiabetesBeforeLaunch()));
etInsulinMondayBeforeLaunch.setText(String.valueOf(day1.getInsulinBeforeLaunch()));
etDiabetesMondayAfterLaunch.setText(String.valueOf(day1.getDiabetesAfterLaunch()));
etDiabetesMondayBeforeDinner.setText(String.valueOf(day1.getDiabetesBeforeDinner()));
etInsulinMondayBeforeDinner.setText(String.valueOf(day1.getInsulinBeforeDinner()));
etDiabetesMondayAfterDinner.setText(String.valueOf(day1.getDiabetesAfterDinner()));
etDiabetesMondayBeforeSleep.setText(String.valueOf(day1.getDiabetesBeforeSleep()));
etInsulinMondayAfterSleep.setText(String.valueOf(day1.getInsulinBeforeSleep()));
// Tuesday
Day day2 = days.get(1);
etNasteUtorak.setText(String.valueOf(day2.getNaste()));
etInsulinUtorakPreDorucka.setText(String.valueOf(day2.getInsulinBeforeBreak()));
etDiabetesUtorakPosleDorucka.setText(String.valueOf(day2.getDiabetesAfterBreak()));
etDiabetesUtorakPreRucka.setText(String.valueOf(day2.getDiabetesBeforeLaunch()));
etInsulinUtorakPreRucka.setText(String.valueOf(day2.getInsulinBeforeLaunch()));
etDiabetesUtorakPosleRucka.setText(String.valueOf(day2.getDiabetesAfterLaunch()));
etDiabetesUtorakPreVecere.setText(String.valueOf(day2.getDiabetesBeforeDinner()));
etInsulinUtorakPreVecere.setText(String.valueOf(day2.getInsulinBeforeDinner()));
etDiabetesUtorakPosleVecere.setText(String.valueOf(day2.getDiabetesAfterDinner()));
etDiabetesUtorakPredSpavanje.setText(String.valueOf(day2.getDiabetesBeforeSleep()));
etInsulinUtorakPredSpavanje.setText(String.valueOf(day2.getInsulinBeforeSleep()));
}
Что я должен сделать, чтобы сделать это более эффективным и более легким для программы для чтения и как реализовать в этом коде:
List<String> values = new ArrayList<>();
int[] ids = new int[]{R.id.et_naste_monday, R.id.et_insulin_monday_before_breakf, R.id.et_posle_dorucka_monday, R.id.et_pre_rucka_moday,
R.id.et_insulin_monday_pre_rucka, R.id.et_posle_rucka_monday, R.id.et_pre_vecere_moday, R.id.et_insulin_monday_pre_vecere, R.id.et_posle_vecere_monday,
R.id.et_pred_spavanje_moday, R.id.et_insulin_monday_pred_spavanje};
List<Day> days = mDatabase.getAllDaysByWeek(week.getTitle());
for (int id : ids) {
EditText t = (EditText) findViewById(id);
values.add(t.getText().toString());
t.addTextChangedListener(this);
applyChangedEditTextColor(false, values, t);
for (Day day : days) {
// Here i should do the same part as i done it in above example
}
}
Если я пишу в этом методе все я написал выше, где я устанавливаю текст каждого отдельного EditText? –
да, вам нужно будет написать все текстовые элементы за день, но только за один день – JesusS
Но вы видите, что я инициализирую все EditTexts, используя for loop, и в этом для цикла i есть только один вид edittext. –