Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

RecyclerView

메모리 사용량을 최소화하면서 UI에 많은 양의 데이터를 표시합니다.

이 표에는 androidx.recyclerview 그룹의 모든 아티팩트가 나열되어 있습니다.

아티팩트 현재 안정화 버전 다음 버전 후보 베타 버전 알파 버전
recyclerview 1.1.0 - - 1.2.0-alpha05
recyclerview-selection 1.0.0 1.1.0-rc02 - -
이 라이브러리는 2020년 9월 2일에 최종 업데이트되었습니다.

종속 항목 선언

RecyclerView의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용을 알아보려면 Google Maven 저장소를 읽어보세요.

다음과 같이 앱 또는 모듈의 build.gradle 파일에 필요한 아티팩트의 종속 항목을 추가합니다.

dependencies {
    implementation "androidx.recyclerview:recyclerview:1.1.0"
    // For control over item selection of both touch and mouse driven selection
    implementation "androidx.recyclerview:recyclerview-selection:1.1.0-rc03"
}

종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참조하세요.

의견

제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 만들기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 표를 추가할 수 있습니다.

새 문제 만들기

자세한 내용은 Issue Tracker 문서를 참조하세요.

버전 1.2.0

버전 1.2.0-alpha05

2020년 7월 22일

androidx.recyclerview:recyclerview:1.2.0-alpha05가 출시되었습니다. 버전 1.2.0-alpha05에 포함된 커밋을 확인하세요.

버그 수정

  • RecyclerView에 하나의 항목만 있고 그 항목에 포커스가 있는 경우 앞뒤로 포커스가 이동하지 않는 문제를 수정했습니다. (6f36b3)
  • StaggeredGridLayoutManagerArrayIndexOutOfBoundsException 문제가 수정되었습니다. (49b601, b/122303625, b/74877618, b/160193663, b/37086625)
  • 특정 상황에서 RecyclerView가 하위 요소를 표시하지 않고 부적절하게 종료되는 측정 버그가 수정되었습니다. (89040c, b/138734786)

외부 기여

  • Kolin Krewinkel 씨의 기여에 Facebook을 대신하여 감사드립니다.

버전 1.2.0-alpha04

2020년 6월 24일

androidx.recyclerview:recyclerview:1.2.0-alpha04가 출시되었습니다. 버전 1.2.0-alpha04에 포함된 커밋을 확인하세요.

API 변경사항

  • 다른 데이터 병합 동작과 혼동하지 않도록 MergeAdapter의 이름이 ConcatAdapter로 변경되었습니다. (c0540c, b/158019211)

버그 수정

  • 표시되는 모든 항목이 삭제될 때 자동 스크롤이 개선되었습니다. (fe8670, b/154124815)

버전 1.2.0-alpha03

2020년 4월 29일

androidx.recyclerview:recyclerview:1.2.0-alpha03이 출시되었습니다. 버전 1.2.0-alpha03에 포함된 커밋을 확인하세요.

새로운 기능

  • 이제 RecyclerView에 중첩 스크롤과 호환되는 프로그래매틱 스크롤을 허용하는 nestedScrollBy 메서드가 있습니다. (Ibaa58 참조).

버전 1.2.0-alpha02

2020년 4월 1일

androidx.recyclerview:recyclerview:1.2.0-alpha02가 출시되었습니다. 버전 1.2.0-alpha02에 포함된 커밋을 확인하세요.

이 버전 이상의 RecyclerView는 ViewPager2 이전 버전과는 호환되지 않습니다. 현재 androidx.viewpager2:viewpager2:1.0.0 이하를 사용 중인 경우 androidx.viewpager2:viewpager2:1.1.0-alpha01로 업데이트해야 합니다.

새로운 기능

  • MergeAdapter

    • MergeAdapter: 여러 어댑터를 선형적으로 결합할 수 있는 새로운 RecyclerView 어댑터입니다.
    MyAdapter adapter1 = ...;
    AnotherAdapter adapter2 = ...;
    MergeAdapter merged = new MergeAdapter(adapter1, adapter2);
    recyclerView.setAdapter(mergedAdapter);
    

    위 샘플의 경우 MergeAdapter는 adapter1에 뒤이어 adapter2의 항목을 나타냅니다.

  • RecyclerView.Adapter 지연 상태 복원:

    • 어댑터에서 레이아웃 상태가 복원되는 시점을 제어할 수 있도록 하는 새로운 API가 RecyclerView.Adapter 클래스에 추가되었습니다.

    • 예를 들면

    myAdapter.setStateRestorationStrategy(StateRestorationStrategy.WHEN_NOT_EMPTY);
    

    를 호출하여 어댑터가 비어 있지 않을 때까지 RecyclerView를 대기시킨 후에 스크롤 위치를 복원할 수 있습니다.

  • CollectionInfo 및 CollectionItemInfo는 더 이상 기본적으로 채워지지 않습니다.

    • 접근성 서비스(예: 음성 안내 지원)로 사용자에게 숫자와 항목 인덱스를 계속 표시하려면 CollectionInfo와 CollectionItemInfo를 직접 채워야 합니다.

    • 프레임워크가 사용자가 인식한 대로 항목의 수를 결정할 수 없기 때문에 이러한 객체는 더 이상 프레임워크에서 채워지지 않습니다(예: 구분자, 헤더 또는 인식된 여러 항목을 나타내는 RecyclerView 항목).

버그 수정

  • 표시 영역 크기가 변경된 경우 이제 RecyclerView는 표시 영역 밖의 Views에서 고정하지 않습니다.
  • 첫 번째 목록의 원본 항목이 두 번째 목록에서 여러 번 복제될 경우 diff를 잘못 계산할 수 있는 DiffUtil의 버그가 수정되었습니다. (b/123376278 참조)

버전 1.2.0-alpha01

2019년 12월 18일

androidx.recyclerview:recyclerview:1.2.0-alpha01가 출시되었습니다. 버전 1.2.0-alpha01에 포함된 커밋을 확인하세요.

버그 수정

  • RTL 그리기 및 터치 정확도와 관련된 FastScroller의 사소한 문제가 해결되었습니다. (b/143789932, aosp/1130438 참조)
  • ItemTouchHelper 애니메이션이 실행되는 동안 ItemTouchHelper를 RecyclerView에서 삭제할 때 발생하는 비정상 종료가 해결되었습니다. (b/140447176, aosp/1167575 참조)

버전 1.1.0

버전 1.1.0

2019년 11월 20일

androidx.recyclerview:recyclerview:1.1.0이 출시되었습니다. 버전 1.1.0에 포함된 커밋을 확인하세요.

1.0.0 이후 중요 변경사항

  • PagerSnapHelperLinearSnapHelper는 이제 clipToPadding 값에 상관없이 RecyclerView의 패딩을 고려합니다. (b/139452422, b/139012032, aosp/1103182, aosp/1106715, aosp/1130728 참조)
  • RecyclerView.setLayoutTransition(LayoutTransition)이 공식적으로 지원 중단되었으며 null이 아닌 값으로 호출할 경우 IllegalArgumentException이 발생합니다. 대신 RecyclerView.setItemAnimator(ItemAnimator)를 사용하세요. (aosp/839414 참조)
  • aosp/723649: RecyclerView가 이제 NestedScrollingChild3을 구현하므로 중첩된 모든 스크롤 상위 요소가 중첩 스크롤 거리 사용을 중지하면 이를 알 수 있습니다. 현재 개발자 코드가 RecyclerView.onNestedScroll(View, int, int, int, int, int)을 재정의하는 경우 이 메서드는 더 이상 호출되지 않으므로 대신 RecyclerView.onNestedScroll(View, int, int, int, int, int, int[])을 재정의해야 합니다.
  • RecyclerView에는 이제 테마의 기본 스타일을 설정할 수 있는 기본 스타일 속성 recyclerViewStyle이 있습니다.
  • ViewCompat 접근성 작업 API가 더 이상 RecyclerView ItemDelegate를 중단하지 않습니다.
  • LinearLayoutManager.calculateExtraLayoutSpace(RecyclerView.State, int[])를 재정의하여 연결된 RecyclerView의 각 면에 레이아웃 공간을 얼마나 추가해야 하는지 맞춤설정할 수 있습니다. (aosp/931259 참조)
  • 애니메이션에 걸리는 시간(밀리초)을 지정할 수 있도록 smoothScrollBy의 오버로드 RecyclerView#smoothScrollBy(@Px int, @Px int, @Nullable Interpolator, int duration)를 추가했습니다. (aosp/952807 참조)

버전 1.1.0-rc01

2019년 10월 23일

androidx.recyclerview:recyclerview:1.1.0-rc01이 출시되었습니다. 버전 1.1.0-rc01에 포함된 커밋을 확인하세요.

버그 수정

  • RecyclerViewAccessibilityDelegate.ItemDelegate를 재정의할 때 발생하는 '애플리케이션 응답 없음' 오류를 수정했습니다. (aosp/1138057, aosp/1133434 참조)

버전 1.1.0-beta05

2019년 10월 9일

androidx.recyclerview:recyclerview:1.1.0-beta05가 출시되었습니다. 버전 1.1.0-beta05에 포함된 커밋을 확인하세요.

API 변경사항

  • aosp/1106715aosp/1103182의 후속으로 이제 LinearSnapHelper 및 PagerSnapHelper가 clipToPadding 값에 상관없이 RecyclerView의 경계 중심에 있는 뷰를 패딩을 제외하고 반환합니다. (aosp/1130728 참조)

버그 수정

  • RecyclerView가 RecyclerView의 하위 요소에 관한 중복된 접근성 노드를 생성하는 문제를 해결했습니다. (aosp/1130618 참조)
  • RecyclerView의 가상 접근성 계층 구조가 작동하지 않는 문제를 해결했습니다.
  • 맞춤 ItemDelegates가 사용되지 않는 문제를 해결했습니다.

버전 1.1.0-beta04

2019년 9월 5일

androidx.recyclerview:recyclerview:1.1.0-beta04가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

버그 수정

  • PagerSnapHelperLinearSnapHelper는 이제 clipToPadding 값에 상관없이 RecyclerView의 패딩을 고려합니다. (b/139452422, b/139012032, aosp/1103182, aosp/1106715 참조)
  • 중첩된 사전 스크롤로 인해 NestedScrollingParent가 스크롤될 때 RecyclerView가 터치 가로채기를 차단하지 않는 버그를 수정했습니다. (b/138668210, aosp/1105373 참조) ViewPager2와 같은 라이브러리에 유용합니다.
  • 중첩된 사전 스크롤이 전달되기 전에 이제 RecyclerView가 일관적으로 SCROLL_STATE_DRAGGING으로 이동합니다. (aosp/1105373 참조)
  • 이제 동작이 터치 슬롭을 초과하기 전에 중첩된 사전 스크롤이 실행되지 않습니다. (b/139530818, aosp/1105373 참조)
  • 중첩된 사전 스크롤에 전달된 dxdy 인수는 RecyclerView가 해당 방향으로 스크롤할 수 없는 경우 0으로 처리됩니다. (aosp/1105373 참조)

버전 1.1.0-beta03

2019년 8월 15일

androidx.recyclerview:recyclerview:1.1.0-beta03이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

API 변경사항

  • RecyclerView는 이제 View.onScrollChanged(int l, int t, int oldl, int oldt)를 통해 스크롤 거리를 전달하여 접근성 서비스에 스크롤 변경을 정확히 알립니다. (aosp/1007823 참조)

버그 수정

  • RecyclerView 및 접근성과 관련된 주요 버그 stack overflow 버그를 수정했습니다. (aosp/1099577)

버전 1.1.0-beta02

2019년 8월 7일

androidx.recyclerview:recyclerview:1.1.0-beta02가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

새로운 기능

  • RecyclerView에는 이제 테마의 기본 스타일을 설정할 수 있는 기본 스타일 속성 recyclerViewStyle이 있습니다.

버그 수정

  • RecyclerView 스크롤 시 NestedScrollingParent가 스크롤될 때 RecyclerView가 터치 가로채기를 차단하지 않는 버그를 수정했습니다. (b/131115697, aosp/1055911 참조)

버전 1.1.0-beta01

2019년 7월 2일

androidx.recyclerview:recyclerview:1.1.0-beta01이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

새로운 기능

  • RecyclerView는 이제 접근성 이벤트를 통해 스크롤이 시작될 경우 중첩 스크롤에 참여합니다. (aosp/973584 참조)

버전 1.1.0-alpha06

2019년 6월 5일

androidx.recyclerview:recyclerview:1.1.0-alpha06androidx.recyclerview:recyclerview-selection:1.1.0-alpha06이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

새로운 기능

  • 애니메이션에 걸리는 시간(밀리초)을 지정할 수 있도록 smoothScrollBy의 오버로드 RecyclerView#smoothScrollBy(@Px int, @Px int, @Nullable Interpolator, int duration)를 추가했습니다. (aosp/952807 참조)

API 변경사항

  • GridLayoutManagerStaggeredGridLayoutManager는 더 이상 접근성을 위해 자동으로 전체 범위 항목을 헤더로 라벨 지정하지 않습니다. (aosp/969703 참조)
  • recyclerview-selection에서 선택 순서(만든 시간순)를 유지합니다. (aosp/937279 참조)

버그 수정

  • 중첩 스크롤 상황에서 RecyclerView가 잘못된 속도로 플링하는 버그를 수정했습니다. (aosp/961642 참조)
  • recyclerview-selection의 안정성을 개선했습니다. (aosp/960213, aosp/926296 참조)

버전 1.1.0-alpha05

2019년 5월 7일

androidx.recyclerview:recyclerview:1.1.0-alpha05androidx.recyclerview:recyclerview-selection:1.1.0-alpha05가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

새로운 기능

  • LinearLayoutManager.calculateExtraLayoutSpace(RecyclerView.State, int[])를 재정의하여 연결된 RecyclerView의 각 면에 레이아웃 공간을 얼마나 추가해야 하는지 맞춤설정할 수 있습니다. (aosp/931259 참조)

API 변경사항

  • DividerItemDecoration 드로어블을 검색하기 위한 API를 추가합니다. (aosp/937282 참조)
  • LinearLayout.getExtraLayoutSpace(RecyclerVew.State)가 지원 중단되고 양쪽에 맞춤형 추가 레이아웃 공간을 제공할 수 있는 새로운 메커니즘으로 대체되었습니다. 새 메서드는 LinearLayout.calculateExtraLayoutSpace(RecyclerView.state, int[])입니다. (aosp/931259 참조)

버그 수정

  • 동작 선택을 삭제했습니다. (aosp/940781)
  • 선택 순서(만든 시간순)를 유지합니다. (b/128455535)

버전 1.1.0-alpha04

2019년 4월 3일

androidx.recyclerview:recyclerview:1.1.0-alpha04가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.

버그 수정

  • RV OnItemTouchListener에서 이전에 ACTION_UP을 가로챌 수 없었기 때문에 OnItemTouchListener에서 다른 코드가 ACTION_UP에 응답하는 것을 차단하지 못했습니다. 이 버그를 이제 수정했습니다. (aosp/916137)

버전 1.1.0-alpha03

2019년 3월 13일

androidx.recyclerview:recyclerview:1.1.0-alpha03이 출시되었습니다. 이 버전에 포함된 커밋의 전체 목록은 여기에서 확인할 수 있습니다.

새로운 기능

  • GridLayoutManager: 선택형 고해상도 GridLayoutManager 스크롤바 치수 측정 (aosp/838836 참조)
    • 범위 정보를 사용하여 GridLayoutManager의 스크롤바 치수를 추정합니다.
    • 사용 설정하려면 GridLayoutManager#setUsingSpansToEstimateScrollbarDimensions(boolean)를 true로 전달하여 호출합니다.
    • 자세한 내용은 GridLayoutManager#setUsingSpansToEstimateScrollbarDimensions(boolean) 관련 문서를 참조하세요.

버그 수정

  • 접근성: ViewHolder 를 재활용한 후 다시 바인딩하면 RecyclerView의 RecyclerViewAccessibilityDelegate에 연결된 ItemDelegate가 ViewHolder의 itemView에 연결되지 않아 접근성이 손상되는 버그가 있었습니다. 이 버그는 이제 수정되었습니다. (aosp/917740 참조)

버전 1.1.0-alpha02

2019년 1월 30일

androidx.recyclerview:recyclerview 1.1.0-alpha02가 출시되었습니다.

API 변경사항

  • RecyclerView.setLayoutFrozen(boolean)RecyclerView.isLayoutFrozen()이 지원 중단되고 RecyclerView.suppressLayout(boolean)RecyclerView.isLayoutSuppressed()로 대체되었습니다. (aosp/839414 참조)
  • RecyclerView.setLayoutTransition(LayoutTransition)이 공식적으로 지원 중단되었으며 null이 아닌 값으로 호출할 경우 IllegalArgumentException이 발생합니다. (aosp/839414 참조)

버그 수정

  • RV에서 SmoothScroller가 중지되지 않는 버그를 수정했습니다. (aosp/843741 참조)
  • 스크롤 애니메이션을 마칠 때 SCROLL_STATE_IDLE을 호출할 수 없는 버그를 수정했습니다. (aosp/812576 참조)

버전 1.1.0-alpha01

2018년 12월 3일

androidx.recyclerview 1.1.0-alpha01androidx.recyclerview-selection 1.1.0-alpha01이 출시되었습니다.

androidx.recyclerview 1.1.0-alpha01

API 변경사항

  • aosp/723649: RecyclerView가 이제 NestedScrollingChild3을 구현하므로 중첩된 모든 스크롤 상위 요소가 중첩 스크롤 거리 사용을 중지하면 이를 알 수 있습니다. 현재 개발자 코드가 RecyclerView.onNestedScroll(View, int, int, int, int, int)을 재정의하는 경우 이 메서드는 더 이상 호출되지 않으므로 대신 RecyclerView.onNestedScroll(View, int, int, int, int, int, int[])을 재정의해야 합니다.

버그 수정

  • TransitionManager를 사용하여 RecyclerView의 항목을 접거나 펼칠 때 발생하는 비정상 종료 문제를 해결했습니다. (b/37129527 참조)
  • RecyclerView.OnItemTouchListener의 동작이 뷰 시스템의 onInterceptTouchEventonTouchEvent 동작과 일치하지 않는 버그를 수정했습니다. (aosp/721235 참조)
  • 부드러운 스크롤과 관련된 극단적인 케이스의 일부 버그를 수정했습니다. (aosp/729718, aosp/747168, aosp/812576 참조)
  • PagerSnapHelper에서 일반적이지 않은 하위 뷰를 처리하기 위한 맞추기 전략을 수정했습니다. (aosp/795752 참조)

androidx.recyclerview-selection 1.1.0-alpha01

버그 수정

  • 선택을 삭제하여 데이터 세트가 변경된 경우에 발생하는 ConcurrentModificationException을 수정했습니다.

RecyclerView-Selection 버전 1.1.0

RecyclerView-Selection 버전 1.1.0-rc02

2020년 9월 2일

androidx.recyclerview:recyclerview-selection:1.1.0-rc02가 출시되었습니다. 버전 1.1.0-rc02에 포함된 커밋을 확인하세요.

주요 기능

  • 입력 처리에서 1.0의 여러 회귀 문제가 해결되었습니다.
  • onRequestDisallowInterceptTouchEvent를 준수하도록 라이브러리를 업데이트하여 ItemTouchHelper와 잘 작동할 수 있습니다. 스와이프만 하면 됩니다.

버그 수정

  • 선택 라이브러리에서 GestureDetector 이벤트를 잘못 해석하여 활성 선택 중에 탭이 누락되는 문제가 수정되었습니다. (b/165030422)
  • 어댑터에서 삭제된 항목을 반영하도록 선택이 업데이트되지 않는 문제가 수정되었습니다. (b/138932671)
  • SelectionTracker에 활성 선택이 있는 동안 RecyclerView 항목이 onClick 이벤트를 발생시키는 문제가 수정되었습니다. (b/161162268)
  • 이제 onRequestDisallowInterceptTouchEvent를 올바르게 처리합니다.
  • Q에서 마우스 스크롤 중에 ”Cannot call this method in a scroll callback”이 표시되는 문제가 수정되었습니다.
  • RecyclerView 인스턴스의 요구사항을 명시하도록 문서(특히 StableIdKeyProvider의 문서)가 업데이트되었습니다.

Recyclerview-Selection 버전 1.1.0-rc01

2020년 2월 5일

androidx.recyclerview:recyclerview-selection:1.1.0-rc01가 출시되었습니다. 버전 1.1.0-rc01에 포함된 커밋을 확인하세요.

버그 수정

  • RecyclerView에서 스크롤 가능한 AppBarLayout으로 상호작용하는 경우 동작을 선택하여 스크롤하기 어렵던 문제가 수정되었습니다(aosp/1193934 참조).

RecyclerView-Selection 버전 1.1.0-beta01

2019년 12월 4일

androidx.recyclerview:recyclerview-selection:1.1.0-beta01가 출시되었습니다. 버전 1.1.0-beta01에 포함된 커밋을 확인하세요.

내부 상태의 관리와 방어적 검사와 관련된 안정성이 전반적으로 개선되었습니다.

버그 수정

API 변경사항

  • 누락된 선택 키 유형 매개변수를 클래스와 메서드에 추가했습니다.
  • 지원 중단된 메서드:
    • SelectionTracker.Builder#withPointerTooltype
    • SelectionTracker.Builder#withGestureTooltype
    • 이러한 메서드의 목적은 개발자가 포인터 또는 동작을 기본값* 이외의 도구 유형에 매핑할 수 있도록 하는 것이었습니다. 이 목적은 좋았지만 좀 더 사용해 본 결과 입력 동작에 관한 사용자의 기대치가 도구 유형에 따라 매우 달랐습니다. 또한 '수동' 스타일러스는 Android 입력 시스템에서는 FINGER 도구 유형입니다.
    • 기본 도구 유형은 동작의 경우에는 FINGER이고 포인터의 경우에는 MOUSE입니다.