안녕하세요. 제가 현재 LinearLayout(vertical) 내부에 2개의 LinearLayout(horizontal)이 존재하는데 첫번째 LinearLayout에는 textView가 5개 들어가있고, 두번째 LinearLayout에는 또 다시 LinearLayout(vertical)이 5개 들어가있습니다.
tv | tv | tv | tv | tv |
---|
LinearLayout
|
LinearLayout
|
LinearLayout
|
LinearLayout
|
LinearLayout
|
5개의 TextView에는 오늘 날짜를 시작으로 5일치의 날짜가 적혀있고,
밑의 5개의 LinearLayout에는 각각 날짜에 맞게 데이터값(view)이 들어가있습니다.
이를 onResume() 함수에서 1분에 한번씩 새로고침 하는 코드를 작성해줬고, LinearLayout 내부의 view들을 모두 초기화 해준 후 다시 불러주는 코드를 넣어주니 LinearLayout은 새로고침이 잘 동작하는데,
날짜가 바뀌었을때(다음날이 되었을 때) TextView는 자동으로 바뀌지 않습니다.
그래서 LinearLayout 내부의 view들을 초기화 할 때 textView도 초기화해줘야할지,
날짜가 바뀔 때만 textView를 초기화했다가 다시 불러오는 방식으로 하고싶은데 어떻게 해줘야할지 잘 모르겠습니다.
코드는 다음과 같습니다.
@Override
protected void onResume() { // 사용자와 상호작용 하는 단계 / Activity 스택의 Top 에 위치 / 주로 어플 기능이 OnResume()에 설정됨
super.onResume();
// 1분마다 refresh
if (thread == null) {
thread = new Thread() {
@Override
public void run() {
try {
while (true) {
synchronized (this) {
Thread.sleep(60000); // 60000 : 60초
runOnUiThread(new Runnable() {
@Override
public void run() {
refresh();
}
});
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
thread.start();
}
// 오늘 토요일
if (Globals.getCurrentNextDate(0, "EE").equals("토")) {
CurrentNextDate(2, 3, 4, 5, 6); // 0: 토, 1: 일
}
// 내일 토요일
else if (Globals.getCurrentNextDate(1, "EE").equals("토")) {
CurrentNextDate(0, 3, 4, 5, 6); // 1: 토, 2: 일
}
// 세번째 날 토요일
else if (Globals.getCurrentNextDate(2, "EE").equals("토")) {
CurrentNextDate(0, 1, 4, 5, 6); // 2: 토, 3: 일
}
// 네번째 날 토요일
else if (Globals.getCurrentNextDate(3, "EE").equals("토")) {
CurrentNextDate(0, 1, 2, 5, 6); // 3: 토, 4: 일
}
// 다섯번째 날 토요일
else if (Globals.getCurrentNextDate(4, "EE").equals("토")) {
CurrentNextDate(0, 1, 2, 3, 6); // 4: 토, 5: 일
}
// 여섯번째 날 토요일
else if (Globals.getCurrentNextDate(5, "EE").equals("토")) {
CurrentNextDate(0, 1, 2, 3, 4); // 5 : 토, 6: 일
}
}
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)"));
}
public void refresh() {
// refresh 시 Layout 내 View 들 모두 초기화
ll_day1.removeAllViews();
ll_day2.removeAllViews();
ll_day3.removeAllViews();
ll_day4.removeAllViews();
ll_day5.removeAllViews();
fnLoadCalendar(); // 연결된 DB 불러오기
db_update();
}