상세 컨텐츠

본문 제목

android calendar event 데이터 표시 (문제 해결)

안드로이드

by 삽질하는 개발자 2020. 5. 12. 17:29

본문

출처: 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;
        }

 

관련글 더보기