코린이 탈출기

chapter 8.2 - 방 목록 보여주기 (2) - 함수, 알고리즘을 활용한 데이터 출력 본문

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

chapter 8.2 - 방 목록 보여주기 (2) - 함수, 알고리즘을 활용한 데이터 출력

50HEE 2021. 5. 24. 19:08

chapter 8.1을 이용하여 추가적인 설정을 해보겠습니다.

 

2021.05.24 - [안드로이드/클래스101 - 비전공자들을 위한 나만의 안드로이드 앱 만들기] - chapter 8.1 - 부동산 앱 화면 따라 만들기 (1) - 기초 화면 작성

 

앞에서 만들었던 방의 층 수를 먼저 바꿔보겠습니다.

방의 정보에서 방의 층 수를 저는 -1, 1, 2 ... 이런 식으로 표현했습니다.

이 층 수를 -숫자는 지하로 0은 반지하로 숫자은 층으로 설정해보겠습니다.

 

 

코드를 작성한 곳은 Room.kt입니다.

 

층 수 설정

이번에는 함수를 이용하여 코드를 작성하였습니다.

함수의 이름을 설정한 후 층을 보여줄 때에는 String을 사용하기 때문에 타입을 선언하였습니다. 9번 줄과 같습니다.

 

이제 층 수를 어떻게 표현할 것인지를 if 문을 이용하였습니다. 

11번 줄에 this.floor은 여기에 있는 floor을 이용하겠다는 뜻입니다.

만약 층이 1보다 크거나 같으면 '층'만 입력하고 싶을 경우에는 결과로 ~층을 String 형식으로 입력하겠습니다.

여기서 층 수는 매번 다르기 때문에 스트링 가공법을 이용하였습니다. 12번 줄과 같습니다.

 

2021.04.22 - [안드로이드/클래스101 - 비전공자들을 위한 나만의 안드로이드 앱 만들기] - chapter 4.3 - 출력할 문구 가공하기 - kotlin의 String 가공

 

14번 줄에는 층 수가 0일 때에는 반지하로 입력하겠습니다.

15번 줄처럼 0일 때는 고정적으로 반지하를 표시할 것이기 때문에 결과로 "반지하"로 표시하였습니다.

마지막으로 0보다 작은 -숫자일 때에는 지하로 표시할 것입니다.

이때 ${this.floor}만 입력할 경우 앞에 표시하였던 -도 같이 표시됩니다.

이를 없애기 위해 '- + - = +'라는 공식처럼 this 앞에 -를 붙여주면 원하는 숫자만 표시할 수 있습니다.

 

이렇게 층 수를 설정을 하였으면 이제 출력하는 부분을 수정하겠습니다.

 

 

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

 

<기존 코드>

층 수 어댑터 연결 <수정 이전>

 

<수정 코드>

층 수 어댑터 연결 <수정 이후>

기존의 코드의 경우에는 주소만 입력되어 있었습니다.

이제 층 수를 함수로 작성하여 가공하였으므로 이를 이용하겠습니다.

33번 줄 처럼 기존 roomData에 층 수를 가공한 함수인 getFormattedFloor 함수가 만들어졌으므로 이를 이용하여 층 수도 같이 표현하였습니다.

 

 

이번에는 비슷하게 가격을 함수로 작성해보겠습니다.

기존의 가격의 경우에는 숫자만 입력하였습니다.

만약 1억 이상(10000 이상)일 경우 억 단위는 억을 붙이고 나머지는 숫자만 나오도록 작성하겠습니다.

 

 

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

 

가격 설정

위 층 수를 표현하는 함수와 마찬가지로 함수 이름을 정한 후 String으로 타입을 선언하였습니다. 25번 줄과 같습니다.

 

if 문을 사용하여 1억 이상인 곳과 미만인 곳으로 설정하였습니다.

27번 줄도 마찬가지로 이 곳의 price를 이용하여 10000(1억) 이상일 경우를 설정하였습니다.

이때 억 단위에 올 숫자의 경우 10000을 나누어 몫만 필요합니다.

코틀린의 나눗셈의 경우에는 정수와 정수를 나눌 때에는 몫만 남기고 나머지 소수점은 버립니다.

몫을 이용하기 위해 30번 줄과 같이 변수를 설정하였습니다.

 

이제 나눈 나머지를 억 뒤에 배치하려 할 때 표현하는 방식은 '%'입니다.

즉, '%'는 나눈 값의 나머지를 표현하고 싶을 때 사용하는 기호입니다. 31번 줄과 같습니다.

결과 값으로 String 가공법을 이용하여 33번 줄과 같이 표현하였습니다.

 

여기서 다른 점은 나머지를 ${rest}로 사용하지 않았습니다.

그 이유는 천 단위로 컴마(,)를 사용하고 싶기 때문입니다. 코드의 경우 33번 줄과 같이 나옵니다.

구글링을 통하여 알아보았습니다. 구글링을 하는 방법은 다음 챕터를 통해 알려드리겠습니다.

이제 나머지 1억 미만의 방의 경우에는 String으로 가격을 표시하면 됩니다. 35번 줄도 마찬가지로 컴마를 표현하였습니다. 대신 마지막에 들어가는 값만 다르게 대입하면 됩니다.

 

마지막으로 어댑터와 연결하여 값을 출력하겠습니다.

 

 

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

 

가격 어댑터 연결

35번 줄과 같이 text를 이용하여 값을 출력하였습니다.

 

 

코드를 작성한 후 에뮬레이터를 동작시키겠습니다.

 

위와 같이 나오면 성공!

Comments