티스토리 뷰
리사이클러뷰란
RecyclerView 위젯은 ListView가 더 진보하고 유연해진 버전입니다.
RecyclerView 모델에서는 여러 다양한 구성요소가 함께 작동하여 데이터를 표시합니다. 사용자 인터페이스의 전체 컨테이너는 레이아웃에 추가하는 RecyclerView 객체입니다. RecyclerView는 개발자가 제공한 레이아웃 관리자에서 제공한 뷰로 채워집니다. 표준 레이아웃 관리자(예: LinearLayoutManager 또는 GridLayoutManager) 중의 하나를 사용하거나 직접 구현할 수 있습니다.
목록의 뷰는 뷰 홀더 객체로 표현됩니다. 이러한 객체는 RecyclerView.ViewHolder를 확장하여 정의한 클래스의 인스턴스입니다. 각 뷰 홀더는 뷰를 사용하여 단일 항목을 표시하는 역할을 합니다. 예를 들어, 목록에서 음악 컬렉션을 표시한다면 각 뷰 홀더는 단일 앨범을 표현할 수도 있습니다. RecyclerView는 동적 콘텐츠에서 화면에 나타나는 부분을 표시하는 데 필요한 뷰 홀더와 몇 개의 추가 뷰 홀더만큼만 만들면 됩니다. 사용자가 목록을 스크롤하면 RecyclerView는 화면에 나타나지 않는 뷰를 가져와서 화면에 스크롤되는 데이터와 다시 바인딩합니다.
뷰 홀더 객체는 RecyclerView.Adapter를 확장하여 만든 어댑터에서 관리합니다. 어댑터는 필요에 따라 뷰 홀더를 만듭니다. 또한 어댑터는 뷰 홀더를 데이터에 바인딩합니다. 이 작업은 뷰 홀더를 특정 위치에 할당하고 어댑터의 onBindViewHolder() 메서드를 호출하여 실행됩니다. 이 메서드는 뷰 홀더의 위치를 사용하여 목록 위치를 기반으로 콘텐츠를 결정합니다.
이 RecyclerView 모델은 많은 최적화 작업을 하므로 다음을 실행할 필요가 없습니다.
- 목록이 처음 게재되면 목록의 측면에 뷰 홀더를 만들고 바인딩합니다. 예를 들어, 뷰가 목록 위치를 0에서 9로 표시하면 RecyclerView는 목록 위치의 뷰 홀더를 만들고 바인딩하며 위치 10의 뷰 홀더를 만들고 바인딩할 수도 있습니다. 이러한 방식으로, 사용자가 목록을 스크롤할 경우 다음 요소가 표시될 준비가 됩니다.
- 사용자가 목록을 스크롤하면 RecyclerView는 필요에 따라 새 뷰 홀더를 만듭니다. 또한 화면 밖으로 스크롤된 뷰 홀더를 재사용할 수 있도록 저장합니다. 사용자가 스크롤 방향을 바꾸면 화면 밖으로 스크롤됐던 뷰 홀더는 곧바로 되돌아올 수 있습니다. 반면, 사용자가 같은 방향으로 스크롤을 계속하면 가장 오래전에 화면 밖으로 스크롤된 뷰 홀더는 새 데이터로 다시 바인딩될 수 있습니다. 뷰 홀더를 만들거나 뷰 홀더의 뷰를 확장할 필요는 없습니다. 대신 앱은 바인딩된 새 항목과 일치하도록 뷰 콘텐츠를 업데이트하기만 하면 됩니다.
- 표시된 항목이 변경되면 적절한 RecyclerView.Adapter.notify…() 메서드를 호출하여 어댑터에 알려줄 수 있습니다. 그런 다음 어댑터의 내장 코드는 영향을 받은 항목만 다시 바인딩합니다.
출처 : https://developer.android.com/
리사이클러뷰 사용법
1. pallete에 있는 RecyclerView를 추가해준다. 그러면 자동으로 build.gradle(app)에 recyclerview가 추가된다.
2. recyclerview 아이템 레이아웃을 만든다. 이 예제에서는 간단한 메모장을 만들기 위해서 제목과 내용을 넣겠다.
eclipsize end는 뒷부분을 ...으로 표시해주고 maxline은 최대 줄을 의미한다.
이는 나중에 자세히 설명하겠다.
3. 아이템 레이아웃에 만든 제목과 내용이이 들어있는 클래스를 만든 후 생성자, setter, getter를 추가해준다.
참고로 오른쪽 클릭 후 generate를 누르면 생성자, getter, setter를 추가할 수 있다.
3. Adapter를 만든다. 다른 Adapter와 다르게 recyclerview는 BaseAdapter를 상속하는게 아니라 RecyclerAdapter를
상속 해야한다.
먼저 배열하나를 만든 후 viewholder 클래스를 만든다.
그리고 alt+enter를 눌러 메소드를 implement한다.
4. 메인액티비티에 아래내용을 추가한다. 작동한다는 것을 보여주기 위해 for문을 이용해 내용을 넣었다.
5. 작동하면 다음과 같이 내용이 출력된다.
메모장을 만드는 과정은 추후에 올릴생각입니다. 오늘은 간단하게 기본적인 내용만 사용해서 recyclerview를 만들어보았습니다. 혹시 틀린 부분이 있거나 궁금한 부분이 있다면 댓글 남겨주세요