본문 바로가기
KUIT-앱 개발 프로젝트 동아리

4주차 실습-RecyclerView

by 농농씨 2023. 10. 4.

지금 총 세 연결이 필요하다.

  1. SentenceActivity ➡️ 어댑터 연결부분
  2. Adapter ➡️ listview_item.xml 연결부분
  3. listview_item.xml ➡️ Activity_sentence.xml의 listview 연결부분

 

아이템 레이아웃 만들기

 

리스트 출력될 화면 만들기

 

 

메인액티비티에 뷰바인딩으로 일단 binding root 불러오기

 

 

Tip: 맥북에서 파일 새로 만들때 Command+N하면 New 만들기 뜸

KotlinClass/File에서 class 선택하고 WordAdapter라는 이름의 어댑터 만들어주기

 

 

 

 

어댑터는 다 만들어줬고, 이제 메인액티비티로 가보자

메인액티비티에서 첫번째로 할 일은 '데이터 만들기'이다.

 

리스트 변수 선언해주고

initWords라는 리스트 초기화 함수와

initRecyclerView라는 어댑터 연결하고 recyclerView의 배치를 설정하는 함수를 차례로 선언해준다.

+fragmet에서 context얻는 방법도 찾아봐야 함

 

실행시켜보면

최대로 화면을 올려도 맨 밑 아이템이 잘리는 경우가 발생한다.

리사이클러 뷰 레이아웃이 화면을 벗어났기 때문이다

 

레이아웃 파일로 가서

(bottomtobottom = parent)로 설정해주고 나서

height가 match_parent면 레이아웃이 화면을 벗어난다

height를 0dp로 constraintLayout에 맞게 설정해주면 안벗어난다

 

실행해보면 맨밑까지 잘 스크롤되는 걸 확인할 수 있다.

 

 

이제 클릭이벤트를 구현해보자

아이템리스너를 통해 onClickListener를 호출해 처리하도록 되어있다

 

14~19, 37~53번 line 추가됐음

(나중에 보니 OnItemClickLIstener에서 앞부분을 대문자로 바꿔줘야 override가 가능했다.)

 

이제 메인액티비티로 가서,

인터페이스의 함수를 실제로 구현하고, 그걸 연결하는 동작을 거쳐보자

fun initRecyclerView()에서 진행할 예정

 

 

익명클래스란? 클래스 정의 없이 사용하는 방법, 주로 인터페이스나 추상 클래스를 확장할때 유용함

initRecyclerView함수에 인터페이스를 상속받은 object를 패러미터로 받아서 함수를 구현함

 

이제 클릭시 액티비티전환하는 이벤트를 구현해보자

 

 

메인에서 클릭이벤트 구현부에 인텐트 추가해주고 putExtra로 리스트의 데이터를 넣어준다

레이아웃 대충 설정해주고

뷰바인딩 해주고

인텐트로 받아온 ExtraData를 변수에 저장

뷰바인딩으로 뷰의 텍스트 뷰의 데이터를 바꿔준다

 

 

 

이제 데이터 클래스를 이용해 여러 타입의 데이터를 전달하는 걸 실습해보자

 

새로운 코틀린 파일을 만드는데, Data Class를 선택해주자

이렇게 작성해주고

데이터 타입, 리스트, 토스트 출력할때 하나만 출력한다든지 등등으로 필요한 데이터타입들을 바꿔준다

실행해보면 이렇게 뜬다

 

근데 String이 아니라 MyWord라는 데이터 타입 자체를 반환하고 싶다면?

Serializable이라는 속성을 추가해주고 메인액티비티에서 intent.putExtra(MyWord)라고 .text 붙이지 않고 그대로 보내준다.

'KUIT-앱 개발 프로젝트 동아리' 카테고리의 다른 글

5주차 실습(1)-Glide 라이브러리, ViewPager2  (0) 2023.10.27
4주차 실습 복습  (1) 2023.10.27
3주차 미션-Bottom Navigation  (1) 2023.10.04
3주차 실습-Fragment  (0) 2023.10.01
2주차-Activity 실습  (0) 2023.09.24