동적 목록 맞춤설정 Android Jetpack의 구성요소
사용자는
RecyclerView
특정 니즈를 충족할 수 있습니다 RecyclerView로 동적 목록 만들기에 설명된 표준 클래스는 대부분의 개발자에게 필요한 모든 기능을 제공합니다. 대부분의 경우 각 뷰 홀더의 뷰를 설계하고 적절한 데이터로 뷰를 업데이트하기 위한 코드를 작성하기만 하면 됩니다. 하지만 앱에 구체적인 요구사항이 있는 경우 여러 가지 방법으로 표준 동작을 수정할 수 있습니다.
이 문서에서는 가능한 맞춤설정 몇 가지를 설명합니다.
레이아웃 수정
RecyclerView
는 레이아웃 관리자를 사용하여 화면에서 개별 항목의 위치를 정하고 사용자에게 더 이상 보이지 않는 항목 뷰를 재사용할 시점을 결정합니다. 뷰를 재사용(또는 재활용)하려면 레이아웃 관리자는 어댑터에 데이터 세트의 다른 요소를 사용하여 뷰의 콘텐츠를 교체하도록 요청할 수 있습니다. 이런 식으로 뷰 재활용으로
불필요한 조회의 생성을 방지하거나
비쌈
findViewById()
발생할 수 있습니다. Android 지원 라이브러리에는 세 가지 표준 레이아웃 관리자,
다음과 같은 다양한 맞춤설정 옵션이 제공됩니다.
LinearLayoutManager
: 항목을 1차원 목록으로 정렬합니다.LinearLayoutManager
와 함께RecyclerView
를 사용하면ListView
레이아웃과 같은 기능을 제공합니다.GridLayoutManager
: 격자무늬의 정사각형과 같이 항목을 2차원 그리드로 정렬합니다.GridLayoutManager
와 함께RecyclerView
를 사용하면GridView
레이아웃과 같은 기능을 제공합니다.StaggeredGridLayoutManager
: 각 열이 약간씩 오프셋된 2차원 그리드로 항목을 정렬합니다. 이전 국기의 별 모양처럼 말이죠.
이러한 레이아웃 관리자가 요구사항에 맞지 않으면 RecyclerView.LayoutManager
추상 클래스를 확장하여 고유의 레이아웃 관리자를 만들 수 있습니다.
항목 애니메이션 추가
항목이 변경될 때마다 RecyclerView
는 애니메이터를 사용합니다.
변경할 수 있습니다. 이 애니메이터는 RecyclerView.ItemAnimator
추상 클래스를 확장한 객체입니다. 기본적으로 RecyclerView
는 DefaultItemAnimator
를 사용하여 애니메이션을 제공합니다. 맞춤 애니메이션을 제공하고 싶은 경우 다음과 같은 작업을 수행할 수 있습니다.
객체를 확장하여 자체 애니메이터 객체를
RecyclerView.ItemAnimator
목록 항목 선택 사용 설정
이
recyclerview-selection
사용자가 터치를 사용하여 RecyclerView
목록에서 항목을 선택할 수 있는 라이브러리
마우스 입력이 필요합니다. 이렇게 하면 선택한 항목의 시각적 표현을 제어할 수 있습니다. 또한 선택 동작을 제어하는 정책(예: 선택할 수 있는 항목 및 선택할 수 있는 항목의 개수)을 제어할 수도 있습니다.
RecyclerView
인스턴스에 선택 지원을 추가하려면
다음 단계를 따르세요.
- 사용할 선택 키 유형을 결정한 다음
ItemKeyProvider
선택한 항목을 식별하는 데 사용할 수 있는 세 가지 키 유형은 다음과 같습니다.
Parcelable
및Uri
와 같은 서브클래스String
Long
선택 키 유형에 관한 자세한 내용은
SelectionTracker.Builder
를 참고하세요. - 구현
ItemDetailsLookup
- 항목 업데이트
객체
View
개 위치RecyclerView
: 사용자가 선택하거나 선택을 취소합니다.선택 라이브러리는 선택된 항목에 기본적인 시각 장식을 제공하지 않습니다.
onBindViewHolder()
를 구현할 때 이를 제공합니다. 다음 접근 방식을 사용하는 것이 좋습니다.onBindViewHolder()
에서 다음을 호출합니다.setActivated()
: 제외setSelected()
: 다음을 포함하는View
객체true
또는false
(항목이 선택합니다.- 뷰의 스타일을 업데이트하여 활성화된 상태를 나타냅니다. kubectl 명령어 색상 상태 list resource를 사용하여 스타일을 구성합니다.
ActionMode
사용 를 사용하여 사용자에게 선택 항목에 대한 작업을 실행할 수 있는 도구를 제공합니다.- 해석된 보조 작업을 실행합니다.
SelectionTracker.Builder
를 사용하여 모든 것을 조립합니다.- 선택사항을 포함 활동 수명 주기 이벤트를 포함합니다.
ItemDetailsLookup
를 사용하면 선택 라이브러리가 MotionEvent
를 통해 RecyclerView
항목에 관한 정보에 액세스할 수 있습니다.
이는 사실상 RecyclerView.ViewHolder
인스턴스에 의해 백업되거나 인스턴스에서 추출된 ItemDetails
인스턴스의 팩토리입니다.
SelectionTracker.SelectionObserver
선택사항이 변경되면 알림을 받게 됩니다. 처음 선택사항을 만들 때
ActionMode
를 시작하여 사용자에게 이를 표시하고
작업을 실행할 수 있습니다. 예를 들어 ActionMode
막대에 삭제 버튼을 추가하고 막대에 있는 뒤로 화살표에 연결하여 선택을 지울 수 있습니다. 선택 항목이 비어 있는 경우(사용자가
마지막으로 작업 모드를 종료합니다.
이벤트 처리 파이프라인이 끝나면 라이브러리에서
사용자가 항목을 눌러 활성화하려고 하거나
항목을 드래그하려고 할 때 발생합니다. 적절한 리스너를 등록하여 이러한 해석에 반응합니다. 자세한 내용은
자세한 내용은
SelectionTracker.Builder
다음 예는 이러한 조각을 합치는 방법을 보여줍니다.
Kotlin
var tracker = SelectionTracker.Builder( "my-selection-id", recyclerView, StableIdKeyProvider(recyclerView), MyDetailsLookup(recyclerView), StorageStrategy.createLongStorage()) .withOnItemActivatedListener(myItemActivatedListener) .build()
자바
SelectionTracker tracker = new SelectionTracker.Builder<>( "my-selection-id", recyclerView, new StableIdKeyProvider(recyclerView), new MyDetailsLookup(recyclerView), StorageStrategy.createLongStorage()) .withOnItemActivatedListener(myItemActivatedListener) .build();
새로운
SelectionTracker
앱에서
RecyclerView.Adapter
RecyclerView
를 초기화하는 데 사용하는
SelectionTracker.Builder
입니다. 따라서
SelectionTracker
인스턴스에 주입하면
RecyclerView.Adapter
그러지 않으면 onBindViewHolder()
메서드에서 항목의 선택 상태를 확인할 수 없습니다.
활동 수명 주기 이벤트 전반에서 선택 상태를 보존하려면 앱은 활동의 onSaveInstanceState()
메서드와 onRestoreInstanceState()
메서드에서 각각 선택 추적기의 onSaveInstanceState()
메서드와 onRestoreInstanceState()
메서드를 호출해야 합니다. 또한 앱에서 고유한 선택 ID를 SelectionTracker.Builder
생성자에 제공해야 합니다. 활동 또는 프래그먼트에는 모두 저장된 상태로 유지되어야 하는 두 개 이상의 구별된 선택 가능 목록이 있을 수 있기 때문에 이 ID는 필수입니다.
추가 리소스
자세한 내용은 다음 참고 자료를 참고하세요.
- 해바라기
데모 앱 -
RecyclerView
사용 - 사용 스크롤 가능한 목록을 표시하는 RecyclerView Codelab
- Android의 경우 Kotlin 기초: RecyclerView 기초 Codelab