如何在Android中为多个EditTexts设置文本

时间:2016-05-30 13:59:29

标签: java android

首先,我想向您介绍我的应用程序,以便您更好地了解我需要的内容。我有三个表daysweeksweekdays的数据库,并且在一个活动中,我按照选定的星期从天数表中提取所有项目,但我不知道如何设置文本致该课程日的所有成员。我将在下面的示例中向您展示我想要的内容。

我已经将文本设置为多个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
        }
    }

1 个答案:

答案 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