출처: https://dpdpwl.tistory.com/3
[안드로이드]달력 만들기(calendar)
안녕하세요!! 오늘은 안드로이드에서 달력을 만들어 보겠습니다!! 안드로이드 달력은 수많은 예제가 있는데요 이번 포스트에서는 Material Calendar 를 사용하여 달력을 만들어 보도록 하겠습니다! h
dpdpwl.tistory.com
위의 출처에서 사용한 calendar 에서 데이터가 있는 날짜에 빨간 점 표시가 제대로 되지 않는 현상이 발생.
문제: 스트링 배열값의 마지막 날짜는 표시가 안되고 대신에 오늘 날짜에 점이 표시
원인: CalendarDay day = CalendarDay.from(calendar); 선언 위치
위의 소스에서 107번째 라인에서 CalendarDay day = CalendarDay.from(calendar); 를 선언하는데
위에서 선언을 하면 기본 디폴트 값으로 오늘 날짜가 들어가서 발생하는 문제이다.
위의 선언문 위치를 수정하여 정렬한 데이터가 정상적으로 들어가게 수정
/////소스코드
private class ApiSimulator extends AsyncTask<Void, Void, List<CalendarDay>> {
String[] Time_Result;
ApiSimulator(String[] Time_Result) {
this.Time_Result = Time_Result;
}
@Override
protected List<CalendarDay> doInBackground(@NonNull Void... voids) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
ArrayList<CalendarDay> dates = new ArrayList<>();
/*특정날짜 달력에 점표시해주는곳*/
/*월은 0이 1월 년,일은 그대로*/
//string 문자열인 Time_Result 을 받아와서 ,를 기준으로 짜르고 string을 int 로 변환
for (int i = 0; i < Time_Result.length; i++) {
//이부분에서 day를 선언하면 초기 값에 오늘 날짜 데이터 들어간다.
//오늘 날짜 데이터를 첫 번째 인자로 넣기 때문에 데이터가 하나씩 밀려 마지막 데이터는 표시되지 않고, 오늘 날짜 데이터가 표시 됨.
// day선언 주석처리
// CalendarDay day = CalendarDay.from(calendar);
// Log.e("데이터 확인","day"+day);
String[] time = Time_Result[i].split(",");
int year = Integer.parseInt(time[0]);
int month = Integer.parseInt(time[1]);
int dayy = Integer.parseInt(time[2]);
//선언문을 아래와 같은 위치에 선언
//먼저 .set 으로 데이터를 설정한 다음 CalendarDay day = CalendarDay.from(calendar); 선언해주면 첫 번째 인자로 새로 정렬한 데이터를 넣어 줌.
calendar.set(year, month - 1, dayy);
CalendarDay day = CalendarDay.from(calendar);
dates.add(day);
}
return dates;
}
안드로이드 MPAndroidChart 사이즈 작아지는 현상 (0) | 2023.01.16 |
---|---|
[Android] Android Context란? (0) | 2022.01.23 |
[Android] 커스텀 다이얼로그(CustomDialog) 구현하기 ClickListener, callback 기능추가 (0) | 2022.01.20 |
Android RecyclerView 구현하기! (0) | 2022.01.09 |