본문 바로가기

모바일/안드로이드

[Android Studio] RecyclerView

기존 안드로이드 : ListView 사용

최근 안드로이드 : RecyclerView 사용

 

ListView 대비 RecyclerView는

  • 개발자들이 구현하던 View Holder 패턴을 라이브러리 내에 포함
  • 단순 가로, 세로 스크롤 외에 그리드 타입, 가변 높이 타입 등 다양한 레이아웃 제공
  • 배경 이미지, 간격 조정 등의 기능 제공

 

새 화면을 출력할 Activity를 하나 추가하고, RecyclerView를 추가한 다음

MainActivity에서 새 Activity를 부르도록 구현

 

RecyclerView의 구성 요소

  • 각 항목의 화면 디자인을 가지고 있는 레이아웃 파일
  • 그 파일을 불러 변수로 제공할 ViewHolder
  • 주어진 데이터와 ViewHolder를 결합하여 각 항목의 화면을 제공할 Adapter
  • 리스트 전체의 좌표 및 사이즈와 이벤트를 담당할 RecyclerView

 

 

실습

MainActivity가 있는 패키지에서 우클릭 > New > Activity > Empty Activity

 

activity_record.xml에 가서 RecyclerView 전체 화면 사이즈로 추가

다운로드가 필요하면 위젯 팔레트에서 다운 받기

 

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context=".RecordActivity">

  <androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

 

res/layout에서 마우스 우클릭 > New > Layout Resource file

File name : item

Root element : LinearLayout

 

 

res/layout/item.xml

layout의 height를 match_parent로 설정 할 경우 한 화면에 하나의 아이템만 출력 되므로 주의

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:gravity="center_vertical|start"
  android:padding="16dp">
  <TextView
    android:id="@+id/textViewContent"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Test"/>
</LinearLayout>

 

 

RecyclerView는 성능 향상을 위해 View를 inflate 하는 수를 줄이고 만들어 둔 View를 재사용

ex) 학생 30명(총 데이터 수)이 훌라후프 시험을 쳐야한다. 선생님은 한 번에 3명만 채점 가능하다.(RecyclerView의 실제 사이즈에 따라 화면에 출력되는 아이템의 수가 정해짐). 이경우 훌라후프를 30개 준비할 수도 있지만 6개 정도만 준비해 시험을 치는 사람과 그 다음 3명 정도만 가지고 있다가 시험을 마친 경우 훌라후프를 다음 학생에게 전달해 다시 사용하는 것이 효과적이다.

 

비슷하게 RecyclerView는 일정개의 아이템 화면을 만들어 두고(onCreateView) 화면에 나갈 차례가 되었거나 화면에 금방 나갈 것 같은 순서의 데이터에게 그 화면을 전달한다(onBindView)

 

 

'모바일 > 안드로이드' 카테고리의 다른 글

[Android] BroadcastReceiver  (0) 2021.06.18
[Android] Permission  (0) 2021.06.18
[Android Studio] SharedPreference  (0) 2021.04.04
[Android Studio]Activity 와 Intent  (0) 2021.04.04
[Android Studio] View Binding  (0) 2021.04.04