안녕하세요.
LinearLayout에 TextView 5개를 넣어두고,
첫번째 TextView에 오늘날짜를 시작으로 5일치의 날짜가 들어가되, 주말은 제외하고 들어가게 하는 코드를 작성중입니다.
LinearLayout(horizontal) - tv_day1, tv_day2, tv_day3, tv_day4, tv_day5
우선 int day 값을 통해 날짜를 구할 수 있는 getCurrentNextDate 메소드를 작성했습니다.
(int day값이 0이면 오늘, 1이면 내일, 2이면 그 다음날 ... 이런식입니다.)
Globals.java
// int day 값을 통해 다음날 날짜를 구할 수 있음
public static String getCurrentNextDate(int day, String dayOfWeek) {
DateFormat dtf = new SimpleDateFormat(dayOfWeek);
final Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, day);
return dtf.format(cal.getTime());
}
후에, TextView에 setText해주는 MainActivity.java에 day값을 넣어주는 메소드 CurrentNextDate를 작성했습니다.
이때 요일(EE)을 기준으로 토요일이거나 일요일이면 그 다음날을 출력하도록 int값을 줬고, 결과적으로는 잘 나오는데 이런 코드는 제가 봤을 때 너무 보기 안좋은 코드 같아서요.
혹시 이 방법 말고 다른 더 효율적인 코드로 작성 하는 방법이 있다면 답변으로 알려주시면 정말 감사드립니다!
혹은 이렇게 코드를 작성해도 괜찮을까요?
MainActivity.java
// 오늘이 토요일이면
if (Globals.getCurrentNextDate(0, "EE").equals("토")) {
CurrentNextDate(2, 3, 4, 5, 6); // 0: 토, 1: 일
}
// 오늘이 일요일이면
else if (Globals.getCurrentNextDate(0, "EE").equals("일")) {
CurrentNextDate(1, 2, 3, 4, 5); // 0: 일
}
// 내일이 토요일이면
else if (Globals.getCurrentNextDate(1, "EE").equals("토")) {
CurrentNextDate(0, 3, 4, 5, 6); // 1: 토, 2: 일
}
// 내일이 일요일이면
else if (Globals.getCurrentNextDate(1, "EE").equals("일")) {
CurrentNextDate(0, 2, 3, 4, 5); // 1: 일
}
// 세번째 날이 토요일이면
else if (Globals.getCurrentNextDate(2, "EE").equals("토")) {
CurrentNextDate(0, 1, 4, 5, 6); // 2: 토, 3: 일
}
// 세번째 날이 일요일이면
else if (Globals.getCurrentNextDate(2, "EE").equals("일")) {
CurrentNextDate(0, 3, 4, 5, 6); // 1: 토, 2: 일
}
// 네번째 날이 토요일이면
else if (Globals.getCurrentNextDate(3, "EE").equals("토")) {
CurrentNextDate(0, 1, 2, 5, 6); // 3: 토, 4: 일
}
// 네번째 날이 일요일이면
else if (Globals.getCurrentNextDate(3, "EE").equals("일")) {
CurrentNextDate(0, 1, 4, 5, 6); // 2: 토, 3: 일
}
// 다섯번째 날이 토요일이면
else if (Globals.getCurrentNextDate(4, "EE").equals("토")) {
CurrentNextDate(0, 1, 2, 3, 4); // 4: 토, 5: 일
}
// 다섯번째 날이 일요일이면
else if (Globals.getCurrentNextDate(4, "EE").equals("일")) {
CurrentNextDate(0, 1, 2, 5, 6); // 3: 토, 4: 일
}
public void CurrentNextDate(int day1, int day2, int day3, int day4, int day5) {
tv_day1.setText(Globals.getCurrentNextDate(day1, "M월 dd일 (EE)"));
tv_day2.setText(Globals.getCurrentNextDate(day2, "M월 dd일 (EE)"));
tv_day3.setText(Globals.getCurrentNextDate(day3, "M월 dd일 (EE)"));
tv_day4.setText(Globals.getCurrentNextDate(day4, "M월 dd일 (EE)"));
tv_day5.setText(Globals.getCurrentNextDate(day5, "M월 dd일 (EE)"));
}
감사합니다.