코린이 탈출기

chapter 6.5 - 리스트뷰 만들기 (4) - 실제 데이터 리스트뷰에 반영하기 - getView 함수 수정 본문

인터넷 강의/클래스101 - 비전공자들을 위한 나만의 안드로이드 앱 만들기

chapter 6.5 - 리스트뷰 만들기 (4) - 실제 데이터 리스트뷰에 반영하기 - getView 함수 수정

50HEE 2021. 5. 11. 18:31

이전에는 데이터를 작성하고 어댑터에 연결까지 하였습니다.

 

2021.05.11 - [안드로이드/클래스101 - 비전공자들을 위한 나만의 안드로이드 앱 만들기] - chapter 6.4 - 리스트뷰 만들기 (3) - ArrayList 이용, 실제 목록 추가, 어댑터-리스트뷰 연결

 

마지막 부분인 실제 데이터가 목록에 반영하는 방법에 대해 다루겠습니다.

 

 

 

코드를 작성하는 곳은 StudentAdapter.kt입니다.

 

기존의 어댑터 클래스 코드
수정된 어댑터 클래스 코드

실제 데이터를 목록에 반영하도록 Adapter 클래스를 통해 getView 함수를 사용하였습니다.

getView 함수는 데이터를 한 줄씩 반복적으로 뿌려주는 역할을 하고 있습니다.

기존에는 xml에 그려진 내용을 그대로 뿌려주었다면 이제는 데이터를 반영하여 뿌려주도록 합니다.

 

코드는 student_list_item.xml입니다.

id 설정

우선 xml 한 칸에 해당하는 모양을 만들어 주었던 xml로 이동합니다.

내용을 대입해주기 위해서는 id를 부여해주어야 합니다. 15, 23번 줄과 같습니다.

 

다시 StudentAdapter.kt로 돌아와서 코드를 작성하겠습니다.

getView 함수가 실행할 때 position이라고 getView가 어디에서 실행할지를 정해주어야 합니다.

코딩에서는 첫 번째 줄을 0으로 지정되어있습니다. 만약 세 번째 줄을 설정할 때에는 2가 되는 것입니다.

데이터가 목록의 각 줄에 맞게, 자기 위치에 맞게 지정해주어야 할 때에는 position이라고 설정해야 합니다.

위치를 지정할 때 사용하는 기호로 [ ]를 사용합니다. 34번 줄과 같습니다.

val 변수 명1 = 리스트 명[원하는 위치]

 

별개의 변수로 설정하여 결과를 찾아달라는 의미의 코드를 작성해보겠습니다.

이때 사용하는 것이 'findViewById'입니다. 즉, id를 사용하여 찾아달라는 뜻입니다.

<>안에는 찾아내고 싶은 종류를 설정합니다. ( ) 안에는 원하는 id를 설정합니다.

37번 줄의 경우에는 이름을 39번 줄의 경우에는 출생 연도를 설정하였습니다.

val 변수 명2 = 결과값.findViewById<찾고 싶은 종류>(R.id.원하는 id)

 

아직까지는 변수를 담는 과정으로 에뮬레이터를 실행해봐도 변하는 것은 없습니다.

이번에는 실제로 반영하는 것을 해보겠습니다.

 

기존에 사용했던 text를 작성하는 방법입니다.

 

2021.04.22 - [안드로이드/클래스101 - 비전공자들을 위한 나만의 안드로이드 앱 만들기] - chapter 4.1 - 코틀린으로 UI 속성 변경해 보기 - Text

 

위에 설정한 변수 명으로 내용을 바꾸어 주는 것입니다. 42, 44번 줄과 같습니다.

42번 줄의 경우에는 목록에서 각 자리에 맞게 뽑아낸 데이터를 설정하였습니다.

변수 명2.text = 변수 명1.원하는 재료

44번 줄의 경우에는 String 가공법을 사용하겠습니다.

변수 명 2.text = "(${변수 명1.원하는 재료}년도)"

 

이제 에뮬레이터를 실행을 하면 데이터가 변경되어 실행됩니다!

에뮬레이터

 

 

추가로 만약 2021년 기준 한국 나이로 표현하고 싶을 경우 사용하는 알고리즘을 보여드리겠습니다.

한국식 나이 계산하는 알고리즘

이렇게 수식으로 한국식 나이를 표현해 보았습니다.

알고리즘의 경우 안드로이드 사용법을 배우는 것이 아닌 원하는 데이터로 가공하는 방법을 사용하는 것입니다.

그때 그때 필요한 알고리즘을 고민해주어야 합니다.

 

 

 

리스트뷰를 사용하는 것에 대해 다루었습니다. 

사용하는 xml과 코틀린 파일이 여러 개여서 헷갈릴 수도 있었을 것입니다. 

상속이라는 개념도 조금 다루어 더 어려웠겠지만 chapter7을 통해 상속에 대해 이해한 후 다시 본다면 더욱 쉽게 이해할 수 있을 것입니다! 

Comments