데이터베이스에서 항목을 가져오고 있습니다. 편집 텍스트가 몇 개 있고 이러한 편집 가능한 텍스트에서 텍스트를 가져 와서 해당 텍스트를 전달하고 데이터베이스에서 가져온 목록의 개체도 업데이트해야합니다. 텍스트 편집에서 값을 얻고 있습니다. 이것이 코드에서 보이는 방식입니다.
String getNasteMonday = etNasteMonday != null ? etNasteMonday.getText().toString() : null;
String getInsulinMondayBeforeBreak = etInsulinMondayBeforeBreak != null ? etInsulinMondayBeforeBreak.getText().toString() : null;
List<Day> days = mDatabase.getAllDaysByWeek(week.getTitle());
double nasteValue = convertStringToDouble(getNasteMonday);
double insulinBeforeBreakValue = convertStringToDouble(getInsulinMondayBeforeBreak);
for (Day day : days) {
day.setNaste(nasteValue);
day.setInsulinBeforeBreak(insulinBeforeBreakValue);
mDatabase.updateDay(day);
}
이 경우 데이터베이스에 3 개의 테이블이 있는데, 하나는 일 저장 용이고, 하나는 주 저장 용이고, 다른 하나는 주 단위로 저장하기위한 것입니다. 이 경우 주 이름으로 데이터를 가져오고 있으며 모든 Week 개체에는 7 일이 있으며 해당 주에 매일 다른 값을 저장해야합니다. 이제 내가 얻은 것은이 foreach 루프에서 7 일 동안 동일한 값을 저장하고 있으며 그것을 원하지 않는다는 것입니다. 예를 들어 다음과 같이하고 싶습니다.
for (Day day1 : days) {
day1.setNaste(nasteValue);
}
for (Day day2 : days) {
day2.setNaste(nasteValue2);
}
편집하다:
데이터베이스에서 데이터를 가져올 때 EditText에 텍스트를 표시하는 방법 :
문자열 배열에서 텍스트를 설정해야합니다.
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());
int count = 0;
for (int id : ids) {
EditText t = (EditText) findViewById(id);
values.add(t.getText().toString());
t.addTextChangedListener(this);
applyChangedEditTextColor(false, values, t);
// Here i should implement some logic like and apply for all edittexts
// for (Day day : days) {
//
// }
}
사용할 EditText가 많기 때문에. 인스턴스를 저장하기 위해 배열을 생성하여 루프에서 복구합니다.
EditText[] nasteEdit = new EditText[]{ /* your seven instance of editText for naste value in correct order */};
List<Day> days = mDatabase.getAllDaysByWeek(week.getTitle());
int cntDays = 0;
for (Day day : days) {
String getNasteMonday = nasteEdit[cntDays] != null ? nasteEdit[cntDays].getText().toString() : null;
double nasteValue = convertStringToDouble(getNasteMonday);
day.setNaste(nasteValue);
// SAME FOR OTHER ATTRIBUTE
mDatabase.updateDay(day);
cntDays++;
}
루프 중에 올바른 EditText를 얻고 값을 만듭니다. 여기에 반복 루프를 유지하고 외부 카운터를 사용하지만 작동합니다.
모든 속성에 Day
대해이 작업을 수행하면 작동합니다.
배열에는 EditText의 인스턴스가 있어야하므로 각 텍스트를 가져 오는 데 시간을 낭비하지 마십시오.)
이것이 효과가 있기를 바랍니다. 지금은 테스트 할 수 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다