티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

RecyclerView inside ScrollView is not working

ScrollView 안에 RecyclerView가 작동하지 않습니다.

 문제 내용 

I'm trying to implement a layout which contains RecyclerView and ScrollView at the same layout.

저는 RecyclerView와 ScrollView가 동시에 있는 레이아웃을 구현하려고 합니다.

 

Layout template:

레이아웃 템플릿:
<RelativeLayout>
    <ScrollView android:id="@+id/myScrollView">

       <unrelated data>...</unrealated data>

       <android.support.v7.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/my_recycler_view" />
    </ScrollView>   
</RelativeLayout>

 

Problems: I can scroll until the last element of ScrollView.

문제: 스크롤뷰의 마지막 요소까지만 스크롤이 가능합니다.

 

Things I tried:

제가 알려드릴 수 있는 것은 아래의 문장으로 이해되는 것 같습니다. 시도한 것:

 

  1. Card view inside the ScrollView (now ScrollView contains RecyclerView) - can see the card up until the RecyclerView.
  2. Initial thought was to implement this ViewGroup using RecyclerView instead of ScrollView where one of it's views type is the CardView, but I got the exact same results as with the ScrollView.
1. ScrollView 내부에 있는 카드 뷰(이제 ScrollView가 RecyclerView를 포함함) - RecyclerView까지만 볼 수 있음.
2. 처음에는 RecyclerView를 사용하여 ScrollView 대신에 이 ViewGroup을 구현하는 것이었지만, 그 결과 ScrollView와 정확히 동일한 결과를 얻었습니다.

 

 

 

 높은 점수를 받은 Solution 

use NestedScrollView instead of ScrollView

ScrollView 대신에 NestedScrollView를 사용하세요.

 

Please go through NestedScrollView reference document for more information.

자세한 내용은 NestedScrollView 참조 문서를 확인해주세요.

 

and add recyclerView.setNestedScrollingEnabled(false); to your RecyclerView

RecyclerView에 recyclerView.setNestedScrollingEnabled(false);를 추가하세요.

 

 

 

 가장 최근 달린 Solution 

If you put RecyclerView inside NestedScrollView and enable recyclerView.setNestedScrollingEnabled(false);, scrolling will working well.
However, there is a problem

만약 RecyclerView를 NestedScrollView 안에 넣고, recyclerView.setNestedScrollingEnabled(false);를 활성화하면 스크롤링이 잘 작동합니다.

그러나 문제가 있습니다.

 

RecyclerView don't recycle

해당 RecyclerView는 재활용이 되지 않습니다.

 

For example, your RecyclerView (inside NestedScrollView or ScrollView) have 100 item.
When Activity launch, 100 item will create (onCreateViewHolder and onBindViewHolder of 100 item will called at same time).
Example, for each item, you will load a large image from API => activity created -> 100 image will load.
It make starting Activity slowness and lagging.
Possible solution:
- Thinking about using RecyclerView with multiple type.

예를 들어, NestedScrollView나 ScrollView 안에 RecyclerView가 100개의 아이템을 가지고 있는 경우입니다. Activity가 시작되면 100개의 아이템이 생성됩니다(onCreateViewHolder와 onBindViewHolder는 동시에 호출됩니다).
각 아이템마다 API에서 큰 이미지를 로드할 경우 Activity 시작이 느려지고 끊김이 발생할 수 있습니다.

가능한 해결책: 
여러 타입을 가진 RecyclerView를 사용하는 것을 고려하세요.

 

However, if in your case, there are just a few item in RecyclerView and recycle or don't recycle don't affect performance a lot, you can use RecyclerView inside ScrollView for simple

하지만 만약에 RecyclerView에 몇 개의 아이템만 있고, 재활용을 하든 안 하든 성능에 큰 영향이 없는 경우에는 ScrollView 내부에서 RecyclerView를 사용할 수 있습니다.

 

 

 

출처 : https://stackoverflow.com/questions/27083091/recyclerview-inside-scrollview-is-not-working

반응형
댓글
공지사항
최근에 올라온 글