Kotlin

안드로이드/안드로이드

[Android/Kotlin] 뷰 바인딩(ViewBinding)

뷰바인딩을 쓰는 이유 안드로이드 코드에서 xml에 있는 UI에 접근을 하기 위해서는 FindViewById를 이용합니다. @SuppressWarnings("TypeParameterUnusedInFormals") @Override public T findViewById(@IdRes int id) { return getDelegate().findViewById(id); } //ex) val button : Button = findViewById(R.id.button) 이 방법도 나쁘지는 않지만 일일이 findViewById() 함수로 하나하나 찾아서 가져와야 한다는 애로사항이 있었습니다. 3.5 버전까지는 개발자들이 findViewById를 사용했었지만, Butter knife라는 라이브러리나 extensi..

코틀린/문법및 라이브러리

[Kotlin] Coroutine Flow 맛보기

여러 영상들이나 문제들을 볼 때 Flow를 많이 보았습니다. 그렇지만 그 당시 Flow를 잘 몰랐기에 해당내용을 이해하기 쉽지 않았습니다. 그래서 오늘은 이 Flow를 알아볼까 합니다.  리액티브 프로그래밍은 기존의 명령형 프로그래밍과 대응되는 방식입니다.명령형 프로그래밍 : 데이터를 요청한 후 일회성으로 수신. 이경우 데이터가 필요할 때마다 결괏값을 매번 요청한다는 점에서 매우 비효율적입니다.리액티브 프로그래밍 : 구독을 하면 지속적으로 데이터를 전달하는 역할을 함.  이렇게 전달이 되는 흐름을 데이터 스트림이라고 합니다. Coroutine Flow는 코루틴 상에서 위에서 말한 리액티브 프로그래밍을 지원하기 위해 만들어진 구현체입니다. 코루틴에서 데이터 스트림을 구현하기 위해서는 Flow를 이용하여 구..

안드로이드/안드로이드

[Android/Kotlin] 리사이클러뷰(RecyclerView) 어댑터 이야기

안드로이드로 앱을 개발하다 보면 여러 어댑터를 만나게 됩니다. 어댑터(영어: adapter, adaptor)는 다른 전기나 기계 장치를 서로 연결해서 작동할 수 있도록 만들어 주는 결합 도구를 뜻합니다. 안드로이드에서 이러한 어댑터들은 리스트뷰나 ViewPager같이 연속된 객체들을 보여줄 때 어떻게 연결한 것인지에 대해서 설정할 수 있습니다. 오늘은 리사이클러뷰의 어댑터들에 대에서 포스팅을 해볼까 합니다. 리사이클러뷰(RecyclerView)는 여러 객체들을 아이템 단위로 구성하여 화면에 출력하는 뷰그룹이며, 한 화면에 표시되기 힘든 많은 수의 데이터를 스크롤 가능한 리스로 표시해 주는 위젯입니다. 그렇다면 이게 리스트 뷰랑 다른 점이 뭐가 다르냐고 말할 수 있습니다. 리사이클러뷰는 이 리스트뷰의 상위..

안드로이드/안드로이드

[Android/Kotlin] ActivityResultLauncher는 무었일까요?

기존에는 startActivityForResult를 이용하여 액티비티 이동시 Result값을 받아오겠다는 것을 알려주고 onActivityResult()를 이용하여 값을 액티비티의 이동후 다 원래 액티비티로 돌아왔을 때 Result로 받아온 값들을 이용할 수 있었습니다. 그렇지만 최근에 와서는 이렇게 startActivityForResult가 deprecated 되면서 안드로이드 자체에서 쓰는 것을 권유하지 않습니다. 역시 같이 쓰이던 onActivityResult() 또한 deprecated 되었습니다. Deprecated : 이 메서드는 ActivityResultContract 및 androidx.activity.result.contract.ActivityResultContracts에서 사용할 수 있..

코틀린/문법및 라이브러리

[Kotlin] 단위 테스트 해보기(1)

https://seedpotato.tistory.com/276 [Effective Kotlin] 10. 안정성 - 단위 테스트(Unit Test)를 만들어라안드로이드 스튜디오를 사용하다 보면 이런 화면을 본 적이 있을 겁니다. 이곳은 단위테스를 하는 공간입니다. 그렇다면 단위테스트는 또 무엇일까요? 이번 포스팅에서는 단위테스트 무엇인지seedpotato.tistory.com이전에 책을 보다 보니 단위 테스트를 주제로 책의 내용이 진행되었습니다. 그 부분을 다 읽고 난생각은 단위테스트 어떻게 작성해야 되는가입니다. 단위 테스트가 좋은 것을 책을 봐서 알고 있습니다. 그렇다면 단위 테스트를 작성하는 문법과 양식은 무엇이고 실습을 해보며 포스팅을 진행해 보겠습니다.코틀린의 단위 테스트를 작성하고 실행하는 가장..

코틀린/문법및 라이브러리

[Kotlin] 여러 종류의 반복문

코틀린의 경우 여러 종류의 반복문이 있습니다. 이러한 반복문들은 2가지로 나눌 수 있습니다. for나 while 같은 예약어로 구성된 반복문과 repeat, foreach 같은 함수형 반복문이 있습니다. 오늘은 이 함수들을 알아보고 이반복문들의 비교를 해보도록 하겠습니다. 예약어 for for(i in Iterable){} 가장 기본적인 반복문입니다. 연속적인 값(Iterable)들을 순환하며 해당 값들을 i에 넣고 연속적인 값들의 크기만큼 순환합니다. while, do while while(조건){} do {} while(조건) 조건이 참일 경우에만 반복하는 반복문입니다. do while은 최소한번은 실행한다는 차이점이 있습니다. 함수형 반복문 repeat repeat(){} @kotlin.intern..

코틀린/문법및 라이브러리

[Kotlin] Contract 로 스마트 케스팅

오늘은 함수들을 열어보다 처음 보는 예약어를 발견했습니다. contract { returns() implies value } 그렇기에 오늘은 이 예약어들을 알아볼까 합니다. Contract의 기능 fun String?.isNotNull(): Boolean = this != null fun foo(s: String?) { if (s != null) s.length if (s.isNotNull()) s?.length // No smartcast :( } 공식문서에서는 contact가 기존의 스마트케스팅을 할 때 해당 스코프를 나가게 될 경우 스마트 캐스팅이 되지 않았던 점이 있었습니다. 그래서 코틀린은 1.3 버전부터 해당기능을 지원하는 contract 함수를 이용할 수 있게 되었습니다. 이 함수의 장점은 ..

코틀린/문법및 라이브러리

[Kotlin] 시퀀스(Sequence) 파보기

오늘을 코틀린의 시퀀스(Sequence)를 알아볼까 합니다. 시퀀스 한국말로 해석하면 수열입니다. 수열은 수가 나열된 것을 말합니다. 코틀린에서도 이와 비슷하게 리스트처럼 수들을 가지고 있을 수 있습니다. 그렇다면 코틀린은 리스트도 있는데 왜 시퀀스를 만들었을까요. 그것은 시퀀스만의 장점이 있기 때문입니다. 시퀀스의 특징에 대한 설명에 앞서 하나의 코드를 보여주겠습니다. //1번 val list = "it is a test code".split(" ") val conversionList = list.filter { it.length > 1 }.map { "[$it]" }.take(2) println(conversionList.joinToString(" "))//[it] [is] println() //2번..

코틀린/Effective Kotlin

[Effective Kotlin] 2. 안정성 - 변수의 스코프를 최소화 하라

변수의 스코프를 최소화시켜야 하는 이유 책에서는 변수의 스코프를 최소화하라고 합니다. 예시를 봐봅시다. fun main(){ val a = 1 val b = 2 val c = 3 fun fizz() { println(a+b) } fun buzz() { println(a+c) } } 이예시에서는 b와 c는 fizz와 buzz에서 밖에 쓰이지 않습니다. 그렇다면 b와 c를 fizz와 buzz안에 넣으면 어떻게 될까요? fun main(){ val a = 1 fun fizz() { val b = 2 println(a+b) } fun buzz() { val c = 3 println(a+c) } } 이렇게 넣게 되면 b나 c라는 변수를 추적하거나 함수의 스코프 밖에서는 해당 변수를 사용할 수 없습니다. 이러한 부..

코틀린/Effective Kotlin

[Effective Kotlin] 1. 안전성 - 가변성을 제한하라

- 시작하며 - 만약 잘 넘어지는 아이가 뛰어놀고 있다면 가장 간단하게 넘어져 다치지 않게 만들 수 있는 방법이 무엇일까요? 저는 우선 아이를 우선 멈춰 새 울 것 같습니다. 멈춰 새운다면 돌아다니지 않으니 다치지 않을 것입니다. 코드도 이와 비슷한 점이 있습니다. 첫 Chapter인 안정성에서는 안정성이 있는 코드를 짜서 잠재적 오류를 배제하라고 합니다. 코드 또한 안전하게 만들기 위해서는 가장 간단하게 가변성을 제한한다면 예측가능한 상황으로 만들 수 있을 것입니다. - 본문 - 코틀린의 요소 중 일부는 var 또는 mutable을 사용하여 상태를 가질 수 있습니다. 이 요소가 작다면 예측가능한 패턴만 있겠지만 그 수가 많다면 생길 수 있는 패턴이 기하급수적으로 늘어날 것입니다. 패턴이 많으면 무슨 문..

감자씨앗
'Kotlin' 태그의 글 목록 (2 Page)