1. 안드로이드 리사이클러뷰와 그리드 레이아웃 매니저를 이용한 해상도별 item 그리기 프로젝트를 진행하며 마주친 문제인데, 리사이클러 뷰 에서 여러 종류의 아이템(헤더, 아이템카드, 푸터)을 뿌려주고 있는 상황이며, 가이드로 나온 디자인은 특정 해상도에서 아이템 뷰를 다르게 보여주기를 원하고 있었습니다. 아래는 디자인 가이드 예시 입니다. 리사이클러 내부에 들어가는 아이템이 한 가지 종류가 아니라 위 디자인 가이드를 보시면 알겠지만 최 상단에는 타이틀 헤더(Header)가 최 하단에는 푸터(Footer)가 붙어있는 상황입니다. 기본적으로 사용하고 있었던 LinearLayoutManager 를 걷어내고 GridLayoutManager 를 사용해야 함은 얼추 알고는 있었는데, 아이템 타입이 여러개 일 때는..
1. Android Retrofit (X-Auth-Token 과 함께 Post 하기) (코틀린) REST API 를 사용해서 문제를 해결해야할 경우 X-Auth-Token(토큰) 이 주어졌고 이를 사용해서 관리 키를 POST 메소드로 받아오려고 할때 필요한 코드를 기록해보려고합니다. (삽질 방지용 글) Field, FieldMap, Query 등을 사용해서 요청할 경우 되지 않아서 좀 삽질을 했습니다만 결론적으로는 Body 를 사용해서 얻어와야 했습니다. (정확히 말하면 @Body 어노테이션) 1.1. POST Example curl -X POST {BASE_URL}/start \ -H 'X-Auth-Token: {X_AUTH_TOKEN}' \ -H 'Content-Type: application/jso..
1. 코틀린 인터페이스의 Default implementation 과 JAVA 코틀린의 인터페이스는 추상 메서드 뿐만이 아니라 구현이 있는 메서드 즉, Default 메서드를 정의할 수 있다. (하지만 필드(상태)는 불가능하다.) 클래스는 class 로 정의하듯 인터페이스는 interface 로 정의 한다. interface Clickable { fun click() } 위 인터페이스는 click() 이라는 추상 메서드를 정의하며 이를 구현하는 클래스는 click()을 반드시 재정의할 필요가 있다. class Button : Clickable { override fun click() = println("it was clicked") } 자바와 달리 콜론(:) 뒤에 확장할 클래스나 인터페이스를 붙여준다. ..
1. 코틀린 New Package, class 사라짐 안보임 해결 인텔리제이(IntelliJ)를 받고 나서 처음 프로젝트를 생성하고 패키지를 생성하는 예시 학습을 하려고 하는데 [New Package]는 보이지 않고, New - Directory 만 있더라고요. 당황스러워서 구글에 검색해보니 해결책을 찾을 수 있었습니다. 1.1. 문제 현상 아래와 같이 src 우클릭 하여 New 메뉴에 Package가 없고 Directory만 있는 경우 입니다. 또는 Class 등 추가가 없는 경우에도 해당될 수 있습니다. IntelliJ does not show 'Class' when we right click and select 'New' 1.2. 해결 방법 해결 방법은 간단합니다. 해당 폴더가 Sources Roo..
이번 글에서는 타입에 대해 또다른 별칭을 붙일 수 있는 코틀린의 기능을 알아보도록 하겠습니다. 🎨 타입에 별명을 짓는 키워드 typealias는 말 그대로 타입(type) 별명(alias)를 붙여서 만들어진 키워드입니다. 원래 정해져있는 타입을 다른 이름으로 사용하고 싶은 경우에 사용하면 편리한 기능입니다. 그러면 아주 간단한 예제 코드를 보면서 설명드리도록 하겠습니다. 💎 예제 코드 (examples) 아래는 typealias를 사용하는 예제코드입니다. typealias Number = Int fun main(args: Array): Unit{ val a: Number = 10 println(a) } 실행 결과 아래는 코드의 실행 결과입니다. 10 Process finished with exit cod..
문자열 ("") 내부에 바로 변수, 표현식을 사용할 수 있는 방법이 있다면, 얼마나 편할까요? C언어에서 사용하는 형식 지정자 %d, %s 등을 쓰지 않고 바로 쓸 수 있는 방법이 코틀린에 있습니다. 🍹 예제 코드 fun main(args: Array): Unit{ val a = 10 val b = 20 println("a의 값은 $a") // "a의 값은 " + a // Syntactic Sugar println("b의 값은 $b") println("a + b = ${a + b}") println("\\\$를 쓰면 어떨까") println("나의 월 수익은 10,000\$다") } 실행 결과 a의 값은 10 b의 값은 20 a + b = 30 \$를 쓰면 어떨까 나의 월 수익은 10,000$다 Proc..
저번 글에서는 문자 하나를 저장하는 Char 타입에 대해서 알아보았다면, 이번 글에서는 문자 여러 개를 저장할 수 있는 타입에 대해서 알아보도록 하겠습니다. 🥤 문자를 여러 개 담을 수 있는 타입이라고 해서 문자열 타입이라고 하며 String 키워드를 사용합니다. 예제 코드 다음은 예제 코드입니다. 아래 코드를 바탕으로 String에 대해서 한 번에 이해합니다. 🍇 fun main(args: Array): Unit{ var str: String = "Hello" println(str) str = str + "\nKotlin!" println(str) println(str[8]) val num = 10 * 5 + 3 println(str + num) println("Kotlin"[0]) } 실행 결과 다음..
코틀린에서 문자 하나를 저장하는 형식에 대해서 소개합니다. 🌑 예제 코드 아래는 예제(예시) 코드입니다. fun main(args:Array):Unit{ var ch:Char = 'A' //2byte println(ch) ch = '\uAC00' //unicode (0~65535) (0~FFFF) println(ch) ch = '가' println(ch.toInt()) } 실행 결과 아래는 실행 결과입니다. A 가 44032 Process finished with exit code 0 코드 설명 코드에 대한 설명을 라인별로 설명합니다. 2(번째 줄): ch라는 이름의 Char형 변수를 선언했습니다. 코틀린에서는 문자하나를 저장하기 위해서 Char 타입을 사용하며 그 크기는 2바이트입니다. 3: ch를 출..
이전 글에서 정수 형식과 실수 형식에 대해서 살펴보았습니다. 그러나 실수 형식의 경우 출력결과가 예상했던 값이 아니라 이상한 값이 나오는 것을 보고 의문점을 남겨두었었죠. 그래서 이번 글에서는 그 의문점을 풀어보도록 하겠습니다. 예제 코드 아래는 예제 코드 입니다. fun main(args:Array):Unit { println(0.1f + 0.1f + 0.1f) println(0.1f +0.1f +0.1f +0.1f +0.1f +0.1f +0.1f +0.1f +0.1f +0.1f) println(0.1f * 10) } 아래는 예제 코드의 실행 결과입니다. 0.3 1.0000001 1.0 Process finished with exit code 0 코드 해설 코드에 대한 해설을 각 줄마다 진행해보겠습니다..
오늘은 코틀린에 있는 정수 타입(형식)과 실수 타입(형식)에 대해서 알아보도록 하겠습니다. 다른 언어와 비슷한 점도 있으나 다른 점 또한 존재하므로 한 번에 설명드리도록 하겠습니다. 그럼 바로 예제 코드를 보시죠. 🧊 예제 코드 예제 코드입니다. fun main(args:Array):Unit { val a:Byte = 125 val b:Short = (100 + 200) * 100 //30000 var c:Int = 12_4354_6538 //가시성 향상 표기법 c = 0xFF_88_88 //0x는 16진수 c = 0b01010010_01100011_01110101_01000101 //0b는 2진수 //8진법은 지원x var d:Long = -543_7847_3984_7238_4723 //자동 Long ..