Android RecyclerView 사용하기

사용 버전: Android Studio 4.0

사용 언어: Kotlin 1.3.72


안드로이드 RecyclerView 사용하기를 알아보겠습니다.


RecyclerView는 ScrollView와 유사하지만 화면에서 벗어난 부분을 계산하지 않는 점과 벗어난 부분의 화면이 새롭게 생기는 부분에 다시 사용된다는 점이 다릅니다.

ScrollView는 모든 부분을 계산하지만, RecyclerView는 보이는 부분만 계산합니다.

즉, 최적화가 돼있습니다.


RecyclerView의 경우 database와 연동을 많이 합니다.



RecyclerView Library입니다.


app 용 build.gradle의 dependencies에 아래를 추가합니다.



Sync now를 누릅니다.







scrollView가 사용되는 곳을 RecyclerView로 교체합니다.





ScrollView 안에 있던 textView는 필요 없습니다. RecyclerView에서 구현할 것이기 때문이죠.




그리고 코드로 가서 layoutManager를 추가합니다.


Linear 모드와 Grid 모드, StaggerdGrid 모드가 있습니다.





RecyclerView에 사용될 item layout을 만듭니다.

layout 우 클릭 - New - Layout Resource File을 누릅니다.




File name을 적고 OK를 누릅니다.






리스트로 사용될 구조를 잡습니다.

저는 아래와 같이 만들었습니다.







lists item layout을 사용할 곳에 Adapter class를 만듭니다.





아래를 추가합니다.

DiffUtil을 사용합니다.







list_item_layout.xml로 가서 databinding을 사용합니다.







다음과 같이 설정합니다.








MorningAdapter로 돌아옵니다.

ViewHolder를 추가합니다.






binding 한 것들을 불러옵니다.





bind 메서드를 추가합니다.


executePendingBindings()는 UI를 즉각적으로 최신화할 수 있습니다.




companion object도 추가합니다.






Class를 ListAdapter로 만듭니다.






두 함수를 override 합니다.









Fragment로 갑니다.

Adapter를 정의합니다.






ViewModel에 있는 infos 변화를 참조하여 RecylcerView를 불러옵니다.











실행하고, 데이터를 추가하면 다음과 같이 됩니다.






이제 textView의 이름을 바꾸는 시간입니다.

BindingUtilsMorning.kt를 만듭니다.







아래를 추가합니다.








그리고, list_item_layout.xml로 갑니다.

위에서 정의한 name을 app:name으로 추가하고 내용으로는 @{bindingBloginfo}를 사용합니다.

24 번 줄, 38 번 줄 참고.






아래는 결과입니다.



MorningAdapter onBindViewHolder: RecyclerView에서 특정 위치에 아이템을 넣습니다.

MorningAdapter onCreateViewHolder: RecyclerView를 화면에 띄웁니다.

MorningAdapter ViewHolder: 각종 필요한 것들을 binding 합니다.

bindingUtilsMorning: RecyclerView의 내용을 설정합니다.




끝.


카테고리: Android

댓글

이 블로그의 인기 게시물

Python OpenCV 빈 화면 만들기

Python urllib.parse.quote()

Python bytes.fromhex()

Android AVD Ram size change

Forensics .pyc 파일 .py로 복구하기

Android Minimum touch target size

KiCad 시작하기 7 (FreeRoute 사용하기 2)

Android Notification with Full Screen

C++ OpenCV 모폴로지 침식, 팽창

KiCad 시작하기 2 (PCB 만들기)