2016-05-30 2 views
0

Прежде всего, я хотел бы познакомить вас с моим приложением, поэтому у вас есть лучшая точка зрения, что мне нужно. У меня есть база данных с тремя таблицами 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 
     } 
    } 

ответ

0

Создать настраиваемое представление со всеми этими edittexts, и установите метод populate (Day day), в который вы заполните все эти setTexts. Затем вы можете сделать

mondayView.populate(day.get(0)); 
tuesdayView.populate(day.get(1)); 

Более подробную информацию о пользовательских просмотров: https://developer.android.com/training/custom-views/index.html https://www.toptal.com/android/android-customization-how-to-build-a-ui-component-that-does-what-you-want

+0

Если я пишу в этом методе все я написал выше, где я устанавливаю текст каждого отдельного EditText? –

+0

да, вам нужно будет написать все текстовые элементы за день, но только за один день – JesusS

+0

Но вы видите, что я инициализирую все EditTexts, используя for loop, и в этом для цикла i есть только один вид edittext. –