일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 코루틴 공식 문서
- Thread vs Coroutine
- Android Compose
- hilt
- 코루틴
- BOJ
- Android Compose Navigation
- Android Custom View
- Sticky Header RecyclerView
- 코루틴 공식문서
- 백준 2615
- 코틀린 에러 핸들링
- Unsupported metadata version. Check that your Kotlin version is >= 1.0: java.lang.IllegalStateException
- 안드로이드 커스텀 뷰
- power menu
- power menu 라이브러리
- 백준
- runCatching
- 안드로이드 무한 스크롤
- Kotlin Serialization
- Coroutine
- 힐트
- android compose orbit
- 안드로이드 컴포즈
- Hilt 에러
- 스레드 vs 코루틴
- viewmodel
- android orbit
- AAC ViewModel
- RecyclerView Sticky Header
- Today
- Total
목록Kotlin (15)
Beeeam

Orbit 라이브러리를 사용하면 MVI 패턴을 더 쉽게 적용할 수 있다. 물론 다른 라이브러리들을 사용해도 MVI 패턴을 적용하는데 도움을 받을 수 있다. 위의 이미지는 다른 라이브러리들과 orbit을 비교한 표이다. 위의 표를 통해서 orbit 라이브러리가 다양한 면에서 장점을 가지고 있음을 알 수 있다. 밑에서 더 자세히 볼 수 있음 https://appmattus.medium.com/top-android-mvi-libraries-in-2021-de1afe890f27 Top Android MVI libraries in 2021 Comparing redux and MVVM+ style MVI libraries appmattus.medium.com Use Orbit Orbit 라이브러리는 상태(state..

최근에 Jetpack Compose를 사용하여 프로젝트를 진행하고 있다. 근데 Navigation을 사용하여 화면 이동을 구현하는 과정에서 data class로 정의된 객체를 전달 해야하는 상황이 생겼다. 화면 이동하면서 인자를 전달하는 방법에 대해서 찾아봤는데 전부 String 타입으로 전달해야 한다는 내용들이였다.근데 현재 내가 처한 상황은 String 타입이 아닌 커스텀 타입의 객체를 전달하는 것이였다. 이에 대해서도 찾아보니 전달하고자 하는 객체를 직렬화 하고 커스텀 NavType을 사용하라는 답을 발견했다.결론부터 말하면 커스텀 NavType을 사용하는 방법으로 해결하지 못했다… 인자의 타입을 커스텀 NavType으로 설정하면 화면 이동이 안되는 오류가 발생했다…그래서 생각하던 중 String ..

코틀린에서는 null이 될 수 있는 타입, 읽기 전용 컬렉션을 제공한다. 그리고 자바 타입 시스템에서 불필요하거나 문제가 되는 부분들은 제거하였다. 6.1 널 가능성 널 가능성은 NullPointerException (NPE) 오류를 피할 수 있게 한다. 6.1.1 널이 될 수 있는 타입 코틀린 타입 시스템은 널이 될 수 있는 타입을 명시적으로 지원한다. 먼저 함수에 인자로 널이 들어올 수 없는 경우에는 다음과 같이 함수를 정의한다. fun strLen(str: String) = str.length 이런 함수에 null을 인자로 넘기면 컴파일 시에 오류가 생긴다. 만약 null을 인자로 받을 수 있게 하려면 타입 이름에 물음표(?)를 명시하면 된다. fun strLen(str: String?) = .....

람다는 다른 함수에 넘길 수 있는 작은 코드 조각을 의미한다. 컬렉션 처리를 할 때 람다가 자주 사용된다. 5.1 람다 식과 멤버 참조 5.1.1 람다 소개: 코드 블록을 함수 인자로 넘기기 람다 식을 사용하면 코드 블록을 직접 함수의 인자로 넘길 수 있다. Listener를 람다로 구현할 수 있다. button.setOnClickListener { /* 클릭 시 수행할 동작 */ } 5.1.2 람다와 컬렉션 fun findTheOldest(people: List) { var maxAge = 0 var theOldest: Person? = null for (person in people) { if (person.age > maxAge) { maxAge = person.age theOldest = pers..

4장에서는 object 키워드에 대해서 설명한다. 이는 싱글톤 클래스(Singleton class), 동반 객체(companion object), 객체 식(object expression)을 표현할 때 사용된다. 4.1 클래스 계층 정의 코틀린에는 자바에는 없는 sealed 변경자가 있는데 이는 클래스의 상속을 제한한다. 4.1.1 코틀린 인터페이스 코틀린 인터페이스 안에는 추상 메서드 뿐만 아니라 구현이 있는 메서드도 정의할 수 있다. 하지만 아무런 상태(필드)도 들어갈 수 없다. interface Clickable { fun click() } 위의 인터페이스는 추상 메서드인 click을 가지는 인터페이스이다. 이를 사용하기 위해서는 이 인터페이스를 구현하는 클래스를 만들어야 한다. class Butt..

3.1 코틀린에서 컬렉션 만들기 코틀린은 자신만의 컬렉션 기능을 제공하지 않는다. 이러한 이유는 표준 자바 컬렉션을 활용하면 자바 코드와 상호작용하기 더 쉽기 때문이다. 코틀린 컬렉션은 자바 컬렉션과 같은 클래스이지만 자바보다 더 많은 기능을 사용할 수 있다. val nums = listOf(1, 14, 2) println(nums.last()) println(nums.max()) 위의 코드처럼 listof() 함수를 사용하여 컬렉션을 만들 수 있고, last(), max() 함수를 사용하여 컬렉션의 마지막 값, 최대 값을 구할 수 있다. 3.2 함수를 호출하기 쉽게 만들기 자바 컬렉션은 디폴트 toString 구현이 들어있다. val nums = listOf(1, 14, 2) println(nums) ..

함수 기본 형태 fun 함수이름(파라미터: 파라미터 타입): 반환 타입 { 함수 본문... } ex) fun test(n1: Int, n2: Int): Int { return if (a > b) a else b } fun 키워드를 사용하여 작성 자바와 달리 클래스 밖에서도 정의 가능 문(Statement) vs 식(Expression) 문: 아무런 값을 만들어내지 않는다. 식: 값을 만들어낸다. 무언가를 반환하는지 안하는지의 차이인듯? 반환하면 식, 안하면 문 코틀린에서는 식이 본문인 함수가 자주 사용된다. ex) 블럭이 본문인 함수 fun test(n1: Int, n2: Int): Int { return if (a > b) a else b } ex) 식이 본문인 함수 fun test(n1: Int, n..

Kotlin In Action 책을 읽고 작성한 글 입니다. Kotlin in Action - YES24 코틀린이 안드로이드 공식 언어가 되면서 관심이 커졌다. 이 책은 코틀린 언어를 개발한 젯브레인의 코틀린 컴파일러 개발자들이 직접 쓴 일종의 공식 서적이라 할 수 있다. 코틀린 언어의 가장 www.yes24.com 코틀린? 자바 플랫폼에서 동작하는 언어이다. 자바가 사용되는 곳에서는 거의 대부분 활용할 수 있다. ex) 안드로이드, 서버 개발 정적 타입 지정 언어 정적 타입 지정: 프로그램의 모든 요소의 타입을 컴파일 시점에서 알 수 있고, 프로그램 안에서 객체의 필드나 메서드를 사용할 때마다 컴파일러가 타입을 검증해준다는 뜻이다. 정적 타입 지정 언어에서는 변수의 타입을 명시적으로 지정해줘야 한다. ..