코틀린 [Kotlin Docs] 가시성 제어자 코틀린에서 클래스, Object, 인터페이스, 생성자, 함수, 프로퍼티 및 접근자는 모두 가시성 제어자를 가질 수 있다. 코틀린에는 private, protected, internal, public의 4가지 가시성 제어자가 존재한다. 기본 가시성은 public이다. 코틀린의 클래스 멤버(지역 선언이 아닌)는 기본 가시성이 public이다. 코틀린에서는 클래스, Object, 인터페이스와 더불... kotlin docs코틀린kotlinkotlin 안드로이드와 코틀린이란? 프로젝트 구조 알아보기 3. 자바와 100% 호환 가능 Gradle Scripts : 빌드에 필요한 정보 (앱을 만드는데 필요한 옵션, 라이브러리 등) android test : 안드로이드 프레임워크를 가지고 테스트 Gradle : 빌드 프로세스 자동화 툴 ➡ 코드를 작성하고 컴파일, 테스트, 서명 및 배포, apk, bundle 패키징하는 작업까지 모두 이루어져야 앱을 사용할 수 있는데 이 과정을 자동화한 것! ... 코틀린안드로이드안드로이드 [코틀린] 백준 12100번: 2048 - 삼성 SW 역량 테스트 기출 문제 풀이 이 문제는 제한 시간이 5초지만 4방향으로 5번만 움직여 주면 되기 때문에 완전탐색(백트래킹)을 사용하였습니다. 백트래킹 상하좌우로 5번 이동했을 시점에서 최고값을 구해주면 됩니다. 블럭 이동 블럭을 이동하는데 있어서 짚고 넘어가야할 부분이 있습니다. 한 번의 이동에서 이미 합쳐진 블록은 또 다른 블록과 다시 합쳐질 수 없다. 예를 들어 다음과 같은 게임 판이 존재한다고 가정해봅시다. 여기서... 삼성기출문제백준코틀린백준 Kotlin을 사용하는 이유 Kotlin은 빌드 되면서 Kotlin 컴파일러를 거쳐 Java 바이트코드를 생성하고, JVM을 통해 기계어로 변환 되는 것을 알 수 있었습니다. Kotlin 컴파일러가 Java 바이트 코드를 생성하기 때문에 다시 Java로 디컴파일이 가능하며, Java와 100% 호환되는 것을 알 수 있습니다. Kotlin은 Java 언어가 처음 설계되었을 때부터 가진 많은 문제점들을 고려해서 언어를 설계... 코틀린코틀린 안드로이드 Retrofit + Coroutines의 API 응답 및 에러 핸들링 - Sandwich Retrofit API 호출은 다양한 exception을 발생시킬 수 있고 (e.g., IOException, HttpException, UnknownHostException), exception은 다른 레이어 계층으로 전파될 수 있기 때문에 레이어 계층 어딘가에서 예외를 반드시 처리해야만 합니다. Retrofit API 응답을 수신 여부에 따라 분류한다면 아래와 같이 크게 두 가지 시나리오... kotlin코틀린안드로이드Coroutines코루틴flowandroidretrofitsandwichCoroutines 2.2 코틀린 기초 / 선택 표현과 처리: enum과 when 코틀린의 when 은 자바의 switch를 대치하되 훨씬 더 강력하고 자주사용한다. 2.3.1 enum 클래스 정의 enum 은 단순 값만 열거하는 존재가 아니라 프로퍼티나 메서드를 정의할 수 있다. 여기서 코틀린 중에서 유일하게 ; 를 사용하는 것을 볼 수 있다. enum 클래스 안에 메서들르 정의하는 경우 반드시 enum 상수 목록과 메서드 정의 사이에 세미콜론을 넣어야한다. 2.3.2 ... 코틀린안드로이드안드로이드 Kotlin | intelliJ - json.jar 적용 Kotlin In Action 으로 코틀린 공부중인데 Json 데이터를 사용할 일이 생겼는데 책에는 다운로드하는게 없어서 찾아봤다. 검색해보는데 확실히 안드로이드 관련 자료가 많은 것 같다😩 json.jar 파일 다운로드 아래 링크에서 Click here if you just want the latest release jar file. 클릭하면 jar파일 다운로드됨 json-특정날짜.jar ... kotlinIntelliJ코틀린json.jar코틀린-스터디IntelliJ 2.1 코틀린 기초 / 기본 요소 : 함수와 변수 모든 언어를 배울 때 국룰인 "Hello World" 출력해봤다. 함수를 선언할 때 fun 키워드를 사용한다. 파라미터 이름 뒤에 그 파라미터의 타입을 쓴다. (변수 선언할 때도 마찬가지) 함수를 최상위 수준에 정의할 수 있다. 자바와 달리 꼭 클래스 안에 함수를 넣을 필요 X 끝에 ; 를 안 붙여도 된다 2.1.2 함수 함수 이름 : max 파라미터 목록 : (a: Int, b:Int) 함... 안드로이드코틀린안드로이드 2.2 코틀린의 기초 / 클래스와 프로퍼티 자바와 코틀린 코드 비교 자바 코틀린 확실히 코틀린이 코드 길이가 간결하다. 2.2.1 프로퍼티 클래스 개념 목적 : 데이터를 캡슐화하고 캡슐화한 데이터를 다루는 코드를 한 주체 아래 가두는 것. 위의 name 부분은 읽기 전용 프로퍼티로, 코틀린은 (비공개) 필드와 필드를 읽는 단순한 (공개) 게터를 만들어낸다. 아래의 isMarried 부분은 쓸 수 있는 프로퍼티로, 코틀린은 (비공개) ... 안드로이드코틀린안드로이드 [Android] viewLifeCycleOwner 프래그먼트에서 LiveData를 위해서 관찰자를 두거나, Flow를 위해 lifecycleScope가 필요할 때 viewLifeCycleOwner가 심심찮게 보이곤 합니다. 위 코드에서 viewLifecycleOwner를 지우고 실행시켜도 물론 잘 돌아갑니다. 그렇지만 왜 사용하는 것일까요? 1. 프래그먼트의 생명 주기 이 글을 읽는 모든 분들이 잘 아시겠지만, 프래그먼트의 생명주기는 onA... jetpackkotlin안드로이드android코틀린android 안드로이드 RecyclerView Adapter View Binding 적용하기 activity는 전부 뷰 바인딩 적용해놓고 RecyclerView 부분은 초기에 파일을 복사+붙여넣기를 반복하다보니 전부 findViewById로 적용해 온 내 자신..(;´д`)ゞ 🙋🏻♀️ inflate란? xml에 표기된 레이아웃들을 메모리에 객체화 시키는 것 위에 가져온 코드는 간단한 코드라 복잡해 보이지 않지만 뷰가 엄청 많은 레이아웃을 연결하면 findViewById로 도배가 되... 안드로이드View BindingRecyclerView코틀린RecyclerView [안드로이드]이벤트 처리 결과로 UI 변경하기 ViewModel에서 인증결과 및 여부를 LiveData를 통해 Activity가 UI를 바꾸도록 하면 된다. LiveData를 보고 있다가 UI 업데이트를 하는 거니까 메인스레드를 쓸 건데, 그러면 MutableLiveData 값 업데이트는 어떤 방식을 써야 괜찮을까..쓸데없이 디테일한가 싶기도 하지만 고민해보았다. MutipleLiveData의 값을 바꿀 때 setValue(), post... MVVMPresentation Layer뷰모델android안드로이드kotlinEvent WrapperLiveDataViewModelObserver패턴UI 업데이트코틀린lifecycleEvent Wrapper 제네릭과 타입 불변성 제네릭은 우리가 코드를 재사용함에 있어서, 타입 안정성을 저하시키는 경우에 대한 방지책으로 나온 것이라고 한다..(예를 들어 파라미터로 값을 Any [자바에서는 Object]로 받는 경우 → 타입 안정성을 저하시킴) 따라서 제네릭을 사용하면 여러 데이터타입을 사용할 수 있는 코드를 작성할 수 있다. 우선 Fruit 클래스와 이를 각각 상속 받는 Banana, Orange 클래스를 만들어 보자... 제네릭타입 불변성코틀린제네릭 코틀린의 제네릭과 가변성에 대해 이전 포스팅에서 제네릭에 대해 글을 쓰던중 공변성이라는 개념이 나왔다. 예를 들어 형식 A의 값을 필요로하는 모든 클래스에 형식 B의 값을 넣어도 아무 문제가 없다면 B는 A의 하위 형식이다. 예를 들어 Int 클래스는 Number클래스에서 상속 받았고, Number 클래스 변수에 Int의 인스턴스를 넣어줄 수 있다. 그렇다면 Int는 Number의 하위 형식이다. 가변성에는 공변성(Cova... 반공변성코틀린 제네릭제네릭무변성공변성코틀린공변성 프로퍼티 위임 - 코틀린 일반적인 프로퍼티들은 매번 필요할 때 마다 그 값을 수동적으로 구현하게 되는데 이걸 한번만 구현한 다음 라이브러리화 시켜 추후에 재사용 할 수 있다면 훨씬 도움이 많이 될 것이다. 코틀린에서 이런 편리한 기능을 위해 프로퍼티 위임 (Delegated properties)를 지원 해준다. 각 프로퍼티들을 별도로 저장하는것이 아닌 Map에 프로퍼티를 저장할 수 있게 한다. 이런 케이스들에도 적용... 코틀린코틀린 코틀린) 코틀린 기본 3 Lambda식은 이름이 없어도 함수 역할을 하는 익명 함수의 하나의 형태로, 화살표 표기법을 사용한다. Lambda식은 함수에서 파라미터나 리턴값이 될 수 있다. 이를 생략하고 argumentList 뒤에 inputType을 작성할 수 있다. input은 여러개일 수 있으므로 inputType에는 항상 괄호를 써야하지만, output은 항상 하나이므로 괄호를 생략해도 된다. 안드로이드 프로그... 코틀린kotlinkotlin 2장. 코틀린 기초 함수를 최상위 수준에 정의 가능/ 자바와 달리, 꼭 클래스 안에 함수를 넣을 필요가 없다. 배열도 일반적인 클래스, 코틀린에는 자바와 달리 배열 처리를 위한 문법이 따로 없다. 식(expression)은 값을 만들어 내며 다른 식의 하위 요소로 계산에 참여할 수 있다. 반환 타입을 생략할 수 있는 이유 (식이 본문인 함수의 반환 타입만 생략 가능) 코틀린은 자바와 마찬가지로 변수 이름에 한글... 코틀린kotlinkotlin 안드로이드 커스텀 다이얼로그(Custom Dialog) 만들기, ClickListener로 클릭 이벤트 정의까지 나는 개인적으로 안드로이드 기본 다이얼로그 디자인을 선호하지 않는다..💦 저 상태에서 기본 색상을 변경하더라도 알림창 하나로 APP 전체적인 디자인 컨셉을 흩트릴 수도 있다는 생각에 기본 알림창 다이얼로그를 전부 커스텀하기로 결정했다. 만들어 볼 커스텀 다이얼로그이다. 여러 페이지(activity, fragment)에 쓰일 수 있도록 TextView는 고정 문구가 아니라 파라미터로 전달 받은... 안드로이드커스텀 다이얼로그코틀린안드로이드 코틀린 델리게이션 하지만 델리게이션은 이런 상속 보다 유연하다고 한다. 자바에서도 이를 사용할 수 있다고는 하지만, 그렇게 언어적으로 친철?하게 지원해주지는 않는다고 한다. 그렇다면 어떤 상황에서 델리게이션을 쓰고 상속을 써야할까? 상속의 경우 리스코프 치환 원칙에 의해서 자식 클래스는 부모 클래스의 메소드를 오버라이드 할 때, 부모 클래스의 외부 동작을 유지해야함 → 이런 행위(수정)은 오류를 발생 시킬 수... by코틀린 델리게이션코틀린상속과 델리게이션델리게이션by Android Basics in Kotlin - Unit 1: Kotlin basics -1 코딩 경험이 없는 사람도 진행에 무리가 없는 과정이라 대부분 쉽게 넘어갈 수 있었다. 4개의 step으로 구성되어 있다. 1. Welcome to Android Basics in Kotlin 안드로이드는 전 세계에 25억대가 넘는 기기가 있다. 진행에 있어 IDE는 안드로이드 스튜디오를 사용하며 2. Build your first Android app in Kotlin 해당 step에서는 앞... 공식문서android안드로이드kotlin코틀린android Clean Code With Kotlin 1 하지만 어떻게 클린 코드를 적을까? 여기 적용 시킬 몇 개의 규칙이 있다. 우리가 패키지, 클래스, 함수, 변수들을 만들 때 코드를 작성한다. 그리고 그들은 이름들을 갖고 있고 우리는 이 컴포넌트의 의도를 표현하는 이름을 골라야 한다. 우리가 가독성 있는 코드를 짜려고 찾아보면 3개의 질문을 하라고 한다. 2) "if-null" checks를 피하고 evils(?:)와 throw를 같이 사용... 클린코드코틀린kotlinkotlin Clean Code With Kotlin 2 예상하지 못한 시나리오에 대처하는 법에 대해 이야기 할 때는 다음 사항을 고려해야 한다. 에러 결과가 부족할수 있는 경우 null 또는 failure 결과를 선호하자. 또한, 코틀린에서는 함수가 아무것도 반환하지 않을 때 Nothing을 사용할 수 있다. 에러 핸들링 또는 상태 관리할 때 쓰기 좋은 코틀린 속 개념이 하나 더 있는데, 그건 바로 "Sealed 클래스는 제한된 클래스 계층을 나... 클린코드코틀린kotlinkotlin [코틀린 안드로이드] 구글 맵 캡쳐 버튼 만들기 구글 지도가 포함된 어플리케이션을 만들 때, 지도 fragment를 캡쳐해서 이미지로 저장하고 싶은 경우가 있다. 구글링을 통해 뷰에서 비트맵을 가져오는 방식으로 했더니, 검은 화면만 나오게 되더라. 알고보니 구글 맵 API에 이미 좋은 기능이 탑재되어 있었고, 간단하게 사용할 수 있었다. 먼저 지도 객체를 얻어와야 한다. 지도 프래그먼트의 getMapAsync를 이용해서 GoogleMap ... 안드로이드 스튜디오안드로이드구글맵코틀린구글맵 코틀린 1 오늘은 코틀린 기본 출력문에 대해 공부를 하였다. 예제코드는 아래와 같다. 출력문 또 코틀린은 변수명 뒤에 $를 붙여 표시한다는 것을 알게되었다. unit를 알게 되었다. unit은 함수의 반환 구문이 없다는 것을 표기한다고 한다. 흔히 자바로 치면 void에 해당이 된다고 한다. 반환 구문이 없다면 unit으로 해당된다는 것을 알고있으면 좋을 것 같다. var val var는 수정이 가능하... 코틀린코틀린 [Android] GridLayout 아이템을 항상 정사각형으로 만들기 갤러리 앱을 만들고 있는데 그리드뷰의 span count가 바뀔 때마다 뷰의 width가 화면 너비에 따라 자동 조정 되면서 직사각형이 되곤 한다.. 이걸 정사각형으로 바꿀 수는 없을까 하루 종일 인터넷을 뒤져보고 마침내 해답을 찾았다. 해답은 layout을 커스텀하여 onMeasure() 메서드의 가로와 세로의 길이를 같도록 바꿔주기만 하면 된다. 이제 커스터마이징한 레이아웃을 xml파일에... 커스텀뷰android리사이클러뷰코틀린android 위치 검색 지도 앱 주요 기능 POI 기능 사용해 retrofit을 통해 가져온 response 바디를 Gson으로 파싱해서 사용 검색화면에서 받아왔던 데이터를 intent로 넘겨받아 GoogleMap을 통해 마커로 지도 위치 표현 본인의 위치 데이터를 POI API를 통해 현재 내 위치 정보를 가져와 Gson으로 파싱해 데이터를 다시 한 번 마커를 통해 뿌려줌 사용 기술 GoogleMap poi Corouti... 프로젝트android코틀린android # 앱 설치 여부 확인 앱이 설치되었는지 확인 후 앱이 설치되지 않았다면 플레이스토어로 이동시키고 설치되어있다면 클로저를 통해 외부의 블럭을 실행시키는 메서드가 필요했습니다. 해당 과정을 진행시키기 위해서는 다음의 과정이 필요합니다. 패키지 이름 쿼리 추가 PM을 통해 앱 설치 여부 확인 미설치시 플레이스토어로 연결 먼저 핸드폰에 임의의 앱이 필요한지를 알기 위해서는 설치 여부를 확인하려는 어플의 패키지이름이 필요... android안드로이드kotlin확인코틀린앱 설치설치 여부android 백준 1364 울타리 치기 코틀린 출처 - 문제 육각형 블록들로 이루어진 RPG 세계가 있다. 그 세계에 나라를 세우려고 하는 군주 캐릭터 송유진은 일반 블록을 울타리 블록으로 바꿀 수 있는 아이템을 N개 가지고 있다. 유진이가 이 N개의 아이템을 이용해서 점령할 수 있는 최대의 영토의 넓이를 구해보자. 울타리 안에 둘러싸인 블록들은 당연히 넓이에 포함 시키고, 울타리를 세운 블록도 넓이에 포함을 시킨다. 울타리는 항상 이어... 백준알고리즘수학구현코틀린구현 3장. 함수 정의와 호출 But, 코틀린에서는 자바보다 더 많은 기능을 쓸 수 있다. 코틀린에서는 함수를 선언할 때, 파라미터의 디폴트 값을 지정할 수 있어서, 이런 오버로드를 피할 수 있다. 코틀린 함수를 자바에서 호출하라 경우, 코틀린 함수가 디폴트 파라미터 값을 제공하더라고 모든 인자를 명시해야 한다. 어떤 클래스의 멤버 메소드처럼 호출할 수 있지만, 클래스 밖에서 선언된 함수 클래스 이름을 수신 객체 타입, ... 코틀린kotlinkotlin 이전 기사 보기
[Kotlin Docs] 가시성 제어자 코틀린에서 클래스, Object, 인터페이스, 생성자, 함수, 프로퍼티 및 접근자는 모두 가시성 제어자를 가질 수 있다. 코틀린에는 private, protected, internal, public의 4가지 가시성 제어자가 존재한다. 기본 가시성은 public이다. 코틀린의 클래스 멤버(지역 선언이 아닌)는 기본 가시성이 public이다. 코틀린에서는 클래스, Object, 인터페이스와 더불... kotlin docs코틀린kotlinkotlin 안드로이드와 코틀린이란? 프로젝트 구조 알아보기 3. 자바와 100% 호환 가능 Gradle Scripts : 빌드에 필요한 정보 (앱을 만드는데 필요한 옵션, 라이브러리 등) android test : 안드로이드 프레임워크를 가지고 테스트 Gradle : 빌드 프로세스 자동화 툴 ➡ 코드를 작성하고 컴파일, 테스트, 서명 및 배포, apk, bundle 패키징하는 작업까지 모두 이루어져야 앱을 사용할 수 있는데 이 과정을 자동화한 것! ... 코틀린안드로이드안드로이드 [코틀린] 백준 12100번: 2048 - 삼성 SW 역량 테스트 기출 문제 풀이 이 문제는 제한 시간이 5초지만 4방향으로 5번만 움직여 주면 되기 때문에 완전탐색(백트래킹)을 사용하였습니다. 백트래킹 상하좌우로 5번 이동했을 시점에서 최고값을 구해주면 됩니다. 블럭 이동 블럭을 이동하는데 있어서 짚고 넘어가야할 부분이 있습니다. 한 번의 이동에서 이미 합쳐진 블록은 또 다른 블록과 다시 합쳐질 수 없다. 예를 들어 다음과 같은 게임 판이 존재한다고 가정해봅시다. 여기서... 삼성기출문제백준코틀린백준 Kotlin을 사용하는 이유 Kotlin은 빌드 되면서 Kotlin 컴파일러를 거쳐 Java 바이트코드를 생성하고, JVM을 통해 기계어로 변환 되는 것을 알 수 있었습니다. Kotlin 컴파일러가 Java 바이트 코드를 생성하기 때문에 다시 Java로 디컴파일이 가능하며, Java와 100% 호환되는 것을 알 수 있습니다. Kotlin은 Java 언어가 처음 설계되었을 때부터 가진 많은 문제점들을 고려해서 언어를 설계... 코틀린코틀린 안드로이드 Retrofit + Coroutines의 API 응답 및 에러 핸들링 - Sandwich Retrofit API 호출은 다양한 exception을 발생시킬 수 있고 (e.g., IOException, HttpException, UnknownHostException), exception은 다른 레이어 계층으로 전파될 수 있기 때문에 레이어 계층 어딘가에서 예외를 반드시 처리해야만 합니다. Retrofit API 응답을 수신 여부에 따라 분류한다면 아래와 같이 크게 두 가지 시나리오... kotlin코틀린안드로이드Coroutines코루틴flowandroidretrofitsandwichCoroutines 2.2 코틀린 기초 / 선택 표현과 처리: enum과 when 코틀린의 when 은 자바의 switch를 대치하되 훨씬 더 강력하고 자주사용한다. 2.3.1 enum 클래스 정의 enum 은 단순 값만 열거하는 존재가 아니라 프로퍼티나 메서드를 정의할 수 있다. 여기서 코틀린 중에서 유일하게 ; 를 사용하는 것을 볼 수 있다. enum 클래스 안에 메서들르 정의하는 경우 반드시 enum 상수 목록과 메서드 정의 사이에 세미콜론을 넣어야한다. 2.3.2 ... 코틀린안드로이드안드로이드 Kotlin | intelliJ - json.jar 적용 Kotlin In Action 으로 코틀린 공부중인데 Json 데이터를 사용할 일이 생겼는데 책에는 다운로드하는게 없어서 찾아봤다. 검색해보는데 확실히 안드로이드 관련 자료가 많은 것 같다😩 json.jar 파일 다운로드 아래 링크에서 Click here if you just want the latest release jar file. 클릭하면 jar파일 다운로드됨 json-특정날짜.jar ... kotlinIntelliJ코틀린json.jar코틀린-스터디IntelliJ 2.1 코틀린 기초 / 기본 요소 : 함수와 변수 모든 언어를 배울 때 국룰인 "Hello World" 출력해봤다. 함수를 선언할 때 fun 키워드를 사용한다. 파라미터 이름 뒤에 그 파라미터의 타입을 쓴다. (변수 선언할 때도 마찬가지) 함수를 최상위 수준에 정의할 수 있다. 자바와 달리 꼭 클래스 안에 함수를 넣을 필요 X 끝에 ; 를 안 붙여도 된다 2.1.2 함수 함수 이름 : max 파라미터 목록 : (a: Int, b:Int) 함... 안드로이드코틀린안드로이드 2.2 코틀린의 기초 / 클래스와 프로퍼티 자바와 코틀린 코드 비교 자바 코틀린 확실히 코틀린이 코드 길이가 간결하다. 2.2.1 프로퍼티 클래스 개념 목적 : 데이터를 캡슐화하고 캡슐화한 데이터를 다루는 코드를 한 주체 아래 가두는 것. 위의 name 부분은 읽기 전용 프로퍼티로, 코틀린은 (비공개) 필드와 필드를 읽는 단순한 (공개) 게터를 만들어낸다. 아래의 isMarried 부분은 쓸 수 있는 프로퍼티로, 코틀린은 (비공개) ... 안드로이드코틀린안드로이드 [Android] viewLifeCycleOwner 프래그먼트에서 LiveData를 위해서 관찰자를 두거나, Flow를 위해 lifecycleScope가 필요할 때 viewLifeCycleOwner가 심심찮게 보이곤 합니다. 위 코드에서 viewLifecycleOwner를 지우고 실행시켜도 물론 잘 돌아갑니다. 그렇지만 왜 사용하는 것일까요? 1. 프래그먼트의 생명 주기 이 글을 읽는 모든 분들이 잘 아시겠지만, 프래그먼트의 생명주기는 onA... jetpackkotlin안드로이드android코틀린android 안드로이드 RecyclerView Adapter View Binding 적용하기 activity는 전부 뷰 바인딩 적용해놓고 RecyclerView 부분은 초기에 파일을 복사+붙여넣기를 반복하다보니 전부 findViewById로 적용해 온 내 자신..(;´д`)ゞ 🙋🏻♀️ inflate란? xml에 표기된 레이아웃들을 메모리에 객체화 시키는 것 위에 가져온 코드는 간단한 코드라 복잡해 보이지 않지만 뷰가 엄청 많은 레이아웃을 연결하면 findViewById로 도배가 되... 안드로이드View BindingRecyclerView코틀린RecyclerView [안드로이드]이벤트 처리 결과로 UI 변경하기 ViewModel에서 인증결과 및 여부를 LiveData를 통해 Activity가 UI를 바꾸도록 하면 된다. LiveData를 보고 있다가 UI 업데이트를 하는 거니까 메인스레드를 쓸 건데, 그러면 MutableLiveData 값 업데이트는 어떤 방식을 써야 괜찮을까..쓸데없이 디테일한가 싶기도 하지만 고민해보았다. MutipleLiveData의 값을 바꿀 때 setValue(), post... MVVMPresentation Layer뷰모델android안드로이드kotlinEvent WrapperLiveDataViewModelObserver패턴UI 업데이트코틀린lifecycleEvent Wrapper 제네릭과 타입 불변성 제네릭은 우리가 코드를 재사용함에 있어서, 타입 안정성을 저하시키는 경우에 대한 방지책으로 나온 것이라고 한다..(예를 들어 파라미터로 값을 Any [자바에서는 Object]로 받는 경우 → 타입 안정성을 저하시킴) 따라서 제네릭을 사용하면 여러 데이터타입을 사용할 수 있는 코드를 작성할 수 있다. 우선 Fruit 클래스와 이를 각각 상속 받는 Banana, Orange 클래스를 만들어 보자... 제네릭타입 불변성코틀린제네릭 코틀린의 제네릭과 가변성에 대해 이전 포스팅에서 제네릭에 대해 글을 쓰던중 공변성이라는 개념이 나왔다. 예를 들어 형식 A의 값을 필요로하는 모든 클래스에 형식 B의 값을 넣어도 아무 문제가 없다면 B는 A의 하위 형식이다. 예를 들어 Int 클래스는 Number클래스에서 상속 받았고, Number 클래스 변수에 Int의 인스턴스를 넣어줄 수 있다. 그렇다면 Int는 Number의 하위 형식이다. 가변성에는 공변성(Cova... 반공변성코틀린 제네릭제네릭무변성공변성코틀린공변성 프로퍼티 위임 - 코틀린 일반적인 프로퍼티들은 매번 필요할 때 마다 그 값을 수동적으로 구현하게 되는데 이걸 한번만 구현한 다음 라이브러리화 시켜 추후에 재사용 할 수 있다면 훨씬 도움이 많이 될 것이다. 코틀린에서 이런 편리한 기능을 위해 프로퍼티 위임 (Delegated properties)를 지원 해준다. 각 프로퍼티들을 별도로 저장하는것이 아닌 Map에 프로퍼티를 저장할 수 있게 한다. 이런 케이스들에도 적용... 코틀린코틀린 코틀린) 코틀린 기본 3 Lambda식은 이름이 없어도 함수 역할을 하는 익명 함수의 하나의 형태로, 화살표 표기법을 사용한다. Lambda식은 함수에서 파라미터나 리턴값이 될 수 있다. 이를 생략하고 argumentList 뒤에 inputType을 작성할 수 있다. input은 여러개일 수 있으므로 inputType에는 항상 괄호를 써야하지만, output은 항상 하나이므로 괄호를 생략해도 된다. 안드로이드 프로그... 코틀린kotlinkotlin 2장. 코틀린 기초 함수를 최상위 수준에 정의 가능/ 자바와 달리, 꼭 클래스 안에 함수를 넣을 필요가 없다. 배열도 일반적인 클래스, 코틀린에는 자바와 달리 배열 처리를 위한 문법이 따로 없다. 식(expression)은 값을 만들어 내며 다른 식의 하위 요소로 계산에 참여할 수 있다. 반환 타입을 생략할 수 있는 이유 (식이 본문인 함수의 반환 타입만 생략 가능) 코틀린은 자바와 마찬가지로 변수 이름에 한글... 코틀린kotlinkotlin 안드로이드 커스텀 다이얼로그(Custom Dialog) 만들기, ClickListener로 클릭 이벤트 정의까지 나는 개인적으로 안드로이드 기본 다이얼로그 디자인을 선호하지 않는다..💦 저 상태에서 기본 색상을 변경하더라도 알림창 하나로 APP 전체적인 디자인 컨셉을 흩트릴 수도 있다는 생각에 기본 알림창 다이얼로그를 전부 커스텀하기로 결정했다. 만들어 볼 커스텀 다이얼로그이다. 여러 페이지(activity, fragment)에 쓰일 수 있도록 TextView는 고정 문구가 아니라 파라미터로 전달 받은... 안드로이드커스텀 다이얼로그코틀린안드로이드 코틀린 델리게이션 하지만 델리게이션은 이런 상속 보다 유연하다고 한다. 자바에서도 이를 사용할 수 있다고는 하지만, 그렇게 언어적으로 친철?하게 지원해주지는 않는다고 한다. 그렇다면 어떤 상황에서 델리게이션을 쓰고 상속을 써야할까? 상속의 경우 리스코프 치환 원칙에 의해서 자식 클래스는 부모 클래스의 메소드를 오버라이드 할 때, 부모 클래스의 외부 동작을 유지해야함 → 이런 행위(수정)은 오류를 발생 시킬 수... by코틀린 델리게이션코틀린상속과 델리게이션델리게이션by Android Basics in Kotlin - Unit 1: Kotlin basics -1 코딩 경험이 없는 사람도 진행에 무리가 없는 과정이라 대부분 쉽게 넘어갈 수 있었다. 4개의 step으로 구성되어 있다. 1. Welcome to Android Basics in Kotlin 안드로이드는 전 세계에 25억대가 넘는 기기가 있다. 진행에 있어 IDE는 안드로이드 스튜디오를 사용하며 2. Build your first Android app in Kotlin 해당 step에서는 앞... 공식문서android안드로이드kotlin코틀린android Clean Code With Kotlin 1 하지만 어떻게 클린 코드를 적을까? 여기 적용 시킬 몇 개의 규칙이 있다. 우리가 패키지, 클래스, 함수, 변수들을 만들 때 코드를 작성한다. 그리고 그들은 이름들을 갖고 있고 우리는 이 컴포넌트의 의도를 표현하는 이름을 골라야 한다. 우리가 가독성 있는 코드를 짜려고 찾아보면 3개의 질문을 하라고 한다. 2) "if-null" checks를 피하고 evils(?:)와 throw를 같이 사용... 클린코드코틀린kotlinkotlin Clean Code With Kotlin 2 예상하지 못한 시나리오에 대처하는 법에 대해 이야기 할 때는 다음 사항을 고려해야 한다. 에러 결과가 부족할수 있는 경우 null 또는 failure 결과를 선호하자. 또한, 코틀린에서는 함수가 아무것도 반환하지 않을 때 Nothing을 사용할 수 있다. 에러 핸들링 또는 상태 관리할 때 쓰기 좋은 코틀린 속 개념이 하나 더 있는데, 그건 바로 "Sealed 클래스는 제한된 클래스 계층을 나... 클린코드코틀린kotlinkotlin [코틀린 안드로이드] 구글 맵 캡쳐 버튼 만들기 구글 지도가 포함된 어플리케이션을 만들 때, 지도 fragment를 캡쳐해서 이미지로 저장하고 싶은 경우가 있다. 구글링을 통해 뷰에서 비트맵을 가져오는 방식으로 했더니, 검은 화면만 나오게 되더라. 알고보니 구글 맵 API에 이미 좋은 기능이 탑재되어 있었고, 간단하게 사용할 수 있었다. 먼저 지도 객체를 얻어와야 한다. 지도 프래그먼트의 getMapAsync를 이용해서 GoogleMap ... 안드로이드 스튜디오안드로이드구글맵코틀린구글맵 코틀린 1 오늘은 코틀린 기본 출력문에 대해 공부를 하였다. 예제코드는 아래와 같다. 출력문 또 코틀린은 변수명 뒤에 $를 붙여 표시한다는 것을 알게되었다. unit를 알게 되었다. unit은 함수의 반환 구문이 없다는 것을 표기한다고 한다. 흔히 자바로 치면 void에 해당이 된다고 한다. 반환 구문이 없다면 unit으로 해당된다는 것을 알고있으면 좋을 것 같다. var val var는 수정이 가능하... 코틀린코틀린 [Android] GridLayout 아이템을 항상 정사각형으로 만들기 갤러리 앱을 만들고 있는데 그리드뷰의 span count가 바뀔 때마다 뷰의 width가 화면 너비에 따라 자동 조정 되면서 직사각형이 되곤 한다.. 이걸 정사각형으로 바꿀 수는 없을까 하루 종일 인터넷을 뒤져보고 마침내 해답을 찾았다. 해답은 layout을 커스텀하여 onMeasure() 메서드의 가로와 세로의 길이를 같도록 바꿔주기만 하면 된다. 이제 커스터마이징한 레이아웃을 xml파일에... 커스텀뷰android리사이클러뷰코틀린android 위치 검색 지도 앱 주요 기능 POI 기능 사용해 retrofit을 통해 가져온 response 바디를 Gson으로 파싱해서 사용 검색화면에서 받아왔던 데이터를 intent로 넘겨받아 GoogleMap을 통해 마커로 지도 위치 표현 본인의 위치 데이터를 POI API를 통해 현재 내 위치 정보를 가져와 Gson으로 파싱해 데이터를 다시 한 번 마커를 통해 뿌려줌 사용 기술 GoogleMap poi Corouti... 프로젝트android코틀린android # 앱 설치 여부 확인 앱이 설치되었는지 확인 후 앱이 설치되지 않았다면 플레이스토어로 이동시키고 설치되어있다면 클로저를 통해 외부의 블럭을 실행시키는 메서드가 필요했습니다. 해당 과정을 진행시키기 위해서는 다음의 과정이 필요합니다. 패키지 이름 쿼리 추가 PM을 통해 앱 설치 여부 확인 미설치시 플레이스토어로 연결 먼저 핸드폰에 임의의 앱이 필요한지를 알기 위해서는 설치 여부를 확인하려는 어플의 패키지이름이 필요... android안드로이드kotlin확인코틀린앱 설치설치 여부android 백준 1364 울타리 치기 코틀린 출처 - 문제 육각형 블록들로 이루어진 RPG 세계가 있다. 그 세계에 나라를 세우려고 하는 군주 캐릭터 송유진은 일반 블록을 울타리 블록으로 바꿀 수 있는 아이템을 N개 가지고 있다. 유진이가 이 N개의 아이템을 이용해서 점령할 수 있는 최대의 영토의 넓이를 구해보자. 울타리 안에 둘러싸인 블록들은 당연히 넓이에 포함 시키고, 울타리를 세운 블록도 넓이에 포함을 시킨다. 울타리는 항상 이어... 백준알고리즘수학구현코틀린구현 3장. 함수 정의와 호출 But, 코틀린에서는 자바보다 더 많은 기능을 쓸 수 있다. 코틀린에서는 함수를 선언할 때, 파라미터의 디폴트 값을 지정할 수 있어서, 이런 오버로드를 피할 수 있다. 코틀린 함수를 자바에서 호출하라 경우, 코틀린 함수가 디폴트 파라미터 값을 제공하더라고 모든 인자를 명시해야 한다. 어떤 클래스의 멤버 메소드처럼 호출할 수 있지만, 클래스 밖에서 선언된 함수 클래스 이름을 수신 객체 타입, ... 코틀린kotlinkotlin 이전 기사 보기