마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

RecyclerViewAdapter에서 onBindViewHolder에서 Position이 두번 넘어갑니다.

0 추천

현재 뷰는 가로형 recyclerview를 만들어서

왼쪽 오른쪽 스크롤을 할때마다 1주일씩 넘어가게 만들고 있습니다. 

왼쪽으로 스크롤할 때는 position을 -1씩 하게 되니 일주일 전의 내용을 보여줍니다. 

그런데 왼쪽으로 스크롤 할 때 position -1 한번하고

position -2 도 한번해서

이주일전의 내용을 보여줍니다. 

아주 느리게 왼쪽으로 스크롤 하면 일주일전의 내용을 보여주고요 ㅠㅠ 

원래 무한 리사이클러뷰를 만들고 싶었는데 그렇게 못해서 지금 MAX_ITEM_COUNT를 10,000개로 하였습니다...

 

 int datePosition = position - (MAX_ITEM_COUNT / 2);

이부분이 문제인 것 같은데 왜 계속 2주일 전의 내용을 보여주는지 모르겠습니다 ㅜㅜ

오른쪽 스크롤은 문제없이 일주일씩 넘어갑니다...

 

@Override
    public void onBindViewHolder(final ViewHolder holder, int position) {  //재활용되는 View 가 호출, Adapter 가 해당 position 에 해당하는 데이터를 결합, 페이지 넘길때마다 reload

        dataSourceArray = new SchedulerNavigationBarModel[dayStringArray.length]; //count, day, date

        int datePosition = position - (MAX_ITEM_COUNT / 2);
        Log.e(TAG, "datePosition : " + datePosition + "          position : " + position);

        dateList = new ArrayList<>();

        String endDate = "";

        calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        calendar.add(Calendar.DATE, datePosition * 7);
        String startDate = ScheduleSimpleDateFormat.getInstance().formatTimeInyyyy_MM_dd(calendar.getTime());

        dateList.add(calendar.getTime()); //dateList에 지금 시간을 넣음
        for (int i = 0; i < dayStringArray.length - 1; i++) { //6번 돌면서
            calendar.add(Calendar.DATE, 1); //하루씩 늘어남
            dateList.add(calendar.getTime()); //dateList에 넣음
            if (i == dayStringArray.length - 2) {  //endDate는 지금부터 add 6일한날 (일요일)
                endDate =  ScheduleSimpleDateFormat.getInstance().formatTimeInyyyy_MM_dd(calendar.getTime());
            }
        }

    }

 

여름솔 님이 2019년 5월 7일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...