계발자 블로그

[Android] RecyclerView 사용하기 본문

Android

[Android] RecyclerView 사용하기

더구더구 2021. 11. 30. 18:41

RecyclerView

안드로이드 개발 하다 보면 무언가를 리스트로 나타내줘야 하는 경우가 상당히 많습니다.

우리가 사용하는 앱들도 어떻게 보면 다 리스트 형식으로 나타나있죠

카톡에 친구 목록, 채팅 목록, 인스타그램 피드 등등

이러한 리스트를 스크롤 가능하게 구현 해주는 것이 리사이클러뷰(RecyclerView)입니다.

 

이와 비슷한 ListView라는 것이 있는데

재사용성에서 리사이클러뷰가 뛰어나기 때문에 리사이클러뷰를 사용하는 것입니다.

이것은 ViewHolder를 리스트뷰에서는 권장하는 것이고

리사이클러뷰에서는 무적권 사용해야 한다는 차이인데 ViewHolder를 통해 만든 객체를 재사용하기 때문입니다.

 

또한 리사이클러뷰에서는 애니메이션을 사용할 수 있고, LayoutManager를 이용해

리스트를 수평으로 만들어 줄 수도 있습니다

 

 

이제 사용법입니다!

 

1. 종속성 추가

 

우선 RecyclerView를 사용하기 위해서 종속 항목을 추가해줘야 됩니다

 

https://developer.android.com/jetpack/androidx/releases/recyclerview

 

RecyclerView  |  Android 개발자  |  Android Developers

RecyclerView 메모리 사용량을 최소화하면서 UI에 많은 양의 데이터를 표시합니다. 이 표에는 androidx.recyclerview 그룹의 모든 아티팩트가 나열되어 있습니다. 아티팩트 현재 안정화 버전 다음 버전 후

developer.android.com

 

앱단의 build.gradle의 추가해줍시다

 

 

2. 아이템을 만들기

 

이렇게 리사이클러뷰에 계속 쌓이게 될 아이템을 만들어주는겁니다

item_recylcer.xml

 

3. ViewHolder를 만들기

 

위에서도 잠깐 설명했지만 뷰홀더는 각각의 뷰를 보관하는 Holder 객체입니다

item을 재활용하기 위해 각 요소들을 저장해두고 사용합니다

아이템 생성 시 뷰 바인딩은 한번만 되고 그 바인딩 된 객체를 가져다 사용하는 것입니다.

 

 

5.  Adapter 만들기

 

어댑터는 리사이클러뷰 안의 아이템들의 뷰를 생성해줍니다

또한 리스트를 스크롤 하다보면 위에 있던 아이템은 보이지 않게 되고 밑에 새로운 아이템이 보여져야 하는데

이 때 위에 있던 데이터들을 밑에 있는 데이터로 대체 시켜주는 역할입니다

 

 

어뎁터를 상속 받으면 멤버 함수들은 자동으로 추가할 수 있습니다

 

onCreateViewHolder

onCreateViewHolder는 ViewHolder를 item 레이아웃과 연결해주는 함수입니다.

 

onBindViewHolder

데이터와 ViewHolder를 연결시켜주는겁니다

데이터를 가져와서 ViewHolder에 연결된 item 레이아웃에 데이터를 채워주는 역할입니다.

 

getItemCount

getItemCount 메소드는 Adapter에게 전체 아이템 갯수를 알려주는 역할입니다

 

 

6. RecyclerView 만들기

 

리사이클러뷰를 보여줄 xml 파일에 리사이클러뷰를 추가해 줍니다.

 

7. RecyclerView 초기화 해주기

ininRecylcerView() 함수를 만들어줬습니다.

 

또 아이템에 들어갈 데이터들도 여기서 추가해줍니다

 

데이터를 직접 넣어줬지만 실무에서는 서버에서 보내주는 데이터들을 받아서 넣을 것 같네요

 

마지막으로 데이터가 변경되면 변경 됬다고 새로고침을 해줘야 하는데

마지막 줄에 rv_Adapter.notifyDataSetChanged()가 그 기능을 해줍니다.

 

실행 해 보면 이렇게 나오고 스크롤도 되는걸 확인할 수 있습니다

저는 스크롤 확인해 보려고 이미지 부분을 크게 했어요ㅎㅎ

 

https://yunaaaas.tistory.com/43

해당 블로그 참고하였습니다

'Android' 카테고리의 다른 글

[Android] ViewPager2  (0) 2021.12.29
[Android] Intent 사용하기  (0) 2021.12.07
[JetPack] Navigation  (0) 2021.11.01
[JetPack] AAC ViewModel  (0) 2021.10.28
LiveData 사용해 보기  (0) 2021.10.27