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

넘 힘들어서 질문올립니다.! (리사이클러뷰 속에 커스텀뷰안에 또다른리사이클러뷰의 스크롤위치 초기화)

0 추천

현재 구조가 전체를 감싸는 세로 리사이클러뷰 안에서 동적으로 커스텀뷰를 생성해서 추가하는 구조입니다.

그리고 커스텀뷰안에는 또 가로스크롤이 되는 리사이클러뷰가 있는 구조입니다.

 

아래는 전체를 감싸는 세로 리사이클러뷰의 onBindViewHolder부분입니다.

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    Log.i(TAG, "onBindViewHolder.. position : " + position);
    LinearLayout rootLay = holder.getRootLayout();
    rootLay.removeAllViews();

    if(position == mMainListItemArray.size() - 1){
        rootLay.setPadding(0,0,0,30);
    } else{
        rootLay.setPadding(0,0,0,0);
    }

    Main.MainListItem mainListItem = mMainListItemArray.get(position);
    String viewType = mainListItem.getView_type();
    String img_cnt = mainListItem.getImg_cnt();

    Log.d(TAG, "viewType : " + viewType + " img_cnt : " + img_cnt);

    if(viewType.equals("1")){ // 재생 화면
        Log.i(TAG, "내가본 재생동영상 진열");
        MoviePlayedViewPagerView playingMoviePagerView = new MoviePlayedViewPagerView(mActivity, mFragmentManager, mainListItem);
        holder.getRootLayout().addView(playingMoviePagerView);

    }else if(viewType.equals("0")){ //일반 카테고리
        if(img_cnt.equals("1")){ //추천 진열
            Log.d(TAG, "추천 영상 진열");
            MovieViewPagerView movieViewPagerView = new MovieViewPagerView(mActivity, mFragmentManager, mainListItem);
            holder.getRootLayout().addView(movieViewPagerView);
        }else if(img_cnt.equals("3")){ //일반 진열
            Log.i(TAG, "일반 진열 타입");
            CategoryView categoryView = new CategoryView(mActivity, mainListItem, mActivity);
            categoryView.setOnItemClickListener(mListener);
            categoryView.setOnCategoryClickListener(mListener);
            holder.getRootLayout().addView(categoryView);
        }
    }
}

타입에 따라서 만들어둔 커스텀뷰를 생성하여 전체를 감싸는 세로 리사이클러뷰의 해당 row의 레이아웃에 addView 시켜주는 방법으로 하였습니다.

그래서 뷰들은 다 잘올라가고 동작까지 다 잘되는데 문제는 안에 들어간 커스텀뷰에 있는 가로스크롤의 스크롤 위치가 자꾸 초기화가 되네요.

예를들어 첫번째 addView된 가로리사이클러뷰에서 리스트를 스크롤하다가

세로 리사이클러뷰를 아래로 좀 스크롤햇다가 다시 와보면 

가로 리사이클러뷰의 스크롤이 초기화가 되어 있습니다.

지금 위에 보시는 부분에서 혹시 문제가 있는건가 싶습니다.

계속 new를 해서 addView시켜서 커스텀뷰 안에 잇는 가로 리사이클러뷰의 스크롤위치가 초기화가 되는건 아닌지 생각이 드는데요..

해결방법이 통 생각이 나질 않아서 질문올립니다. 조언부탁드립니다. 고수님들 ㅠㅠ

갸아악 (21,260 포인트) 님이 2016년 10월 25일 질문
갸아악님이 2016년 10월 27일 수정

답변 달기

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