首先,我想向您介绍我的应用程序,以便您更好地了解我需要的内容。我有三个表days
,weeks
,weekdays
的数据库,并且在一个活动中,我按照选定的星期从天数表中提取所有项目,但我不知道如何设置文本致该课程日的所有成员。我将在下面的示例中向您展示我想要的内容。
我已经将文本设置为多个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 :(得分:0)
使用所有这些edittexts创建自定义视图,并设置一个填充所有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