Kotlin 썸네일형 리스트형 [안드로이드] RxJava3CallAdapterFactory 이번 포스팅에서는 RxJava3CallAdapterFactory에 대한 내용을 알아보고자 한다. 안드로이드에서 Http 통신을 할 때 대부분 Retrofit 라이브러리를 사용한다. 만약 Retrofit과 Rxjava3를 함께 사용한다면 한 번쯤은 이런 에러를 경험했을 수 있다. 아래와 같이 Retrofit 인스턴스와 UserApi 인터페이스를 정의했다고 가정해 보자. val retrofit = Retrofit.Builder() .baseUrl("https://openapi/base") .addConverterFactory(GsonConverterFactory.create(gson)) .build() interface UserApi { @GET("api/v1/users") fun getUser(): Sin.. 더보기 [안드로이드] Retrofit 분석 안드로이드 개발에서 필수적으로 알아야 하는 Retrofit에 대해 알아보자. 우선 Retrofit이 무엇인지 알아야 한다. Retrofit은 OkHttp를 기반으로 한 type-safe 한 HTTP client 오픈소스 라이브러리이다. 쉽게 말해서 안드로이드에서 클라이언트와 서버 간 HTTP 통신을 쉽게 해주는 라이브러리라고 생각하면 될 것 같다. Retrofit 내부 코드에 나와있는 설명을 보면 아래와 같이 나와있다. Retrofit adapts a Java interface to HTTP calls by using annotations on the declared methods to define how requests are made. Create instances using the builder a.. 더보기 [Android] Fragment ViewBinding 사용 시 주의할 점 Fragment에서 ViewBinding을 사용할 시 주의할 점에 대해 알아보자. ViewBinding을 사용할 때 Activity와 Fragment에서 binding을 생성하는 코드를 작성해야 한다. 하지만 프로젝트의 크기가 커질수록 Activity와 Fragment의 수가 많아지면 바인딩에 대한 boilerplate 코드가 생길 수 있다. 그래서 Base 코드들을 작성해 ViewBinding에 대한 코드를 적어놓기도 한다. View Binding을 Activity에서 사용할 때 abstract class BaseActivity( @LayoutRes val layoutRes: Int ) : AppCompatActivity() { protected lateinit var binding: T overrid.. 더보기 [Android] Fragment Lifecycle Fragment의 Lifecycle에 대해 알아보자. 안드로이드 개발을 하면서 수많은 Fragment들을 사용하게 된다. Fragment들은 모두 각각의 lifecycle을 가지고 있다. Fragment 클래스를 보면 LifecyclerOwner 인터페이스를 구현하는 것을 알 수 있다. public interface LifecycleOwner { // return the lifecycle of the provider. @NonNull Lifecycle getLifecycle(); } Fragment에서는 getLifecycle 메서드를 통해 Lifecycle을 알 수 있다. Lifecycle의 상태는 아래와 같다. public enum State { // Destroyed state for a Lifec.. 더보기 [안드로이드] ListAdapter ListAdapter에 대해 알아보자. ListAdapter를 간단하게 이해한 바로는 Recyclerview를 사용하면서 데이터를 더 쉽고 효율적으로 관리할 수 있도록 구현된 Adapter이다. ListAdapter를 사용하게 된 배경은 크게 아래와 같다. 기본 RecyclerView.Adapter를 사용하면서 데이터를 변경하고 이를 알리기 위해 notify 함수들을 호출한다 효율적인 사용을 위해 현재 데이터와 새 데이터를 비교해서 필요한 데이터만 바꿔주는 RecyclerView.DiffUtil 클래스를 사용한다 DiffUtil 비교 연산을 background thread에서 실행하기 위해 AsyncListDiffer 클래스를 Adapter 내에 구현한다 AsyncListDiffer의 기능을 wrappi.. 더보기 [코틀린] 코틀린 테스팅 안드로이드 개발하는 kancho입니다. 이번 포스팅에서는 코틀린의 테스팅(Testing)에 대해 알아보고자 합니다. '코틀린 완벽 가이드' 책을 참고하였습니다. 코테스트 1. 명세 코테스트는 여러 명세 스타일을 지원한다. 지금은 코테스트를 프로젝트에 추가하면 바로 사용할 수 있는 명세 스타일을 살펴보자. 테스트 케이스를 정의하려면 명세 클래스 중 하나를 상속해야 한다. 이후 클래스 생성자에 테스트를 추가하거나 상위 클래스 생성자에 전달하는 람다 안에 테스트를 추가해야 한다. StringSpec 클래스 public abstract class StringSpec public constructor( body: io.kotest.core.spec.style.StringSpec.() -> kotlin.Unit ).. 더보기 [코틀린] 자바와 코틀린의 상호 운용성 안드로이드 개발하는 kancho입니다. 이번 포스팅에서는 자바와 코틀린 코드의 상호 운용성에 대해 알아보고자 합니다. '코틀린 완벽 가이드' 책을 참고하였습니다. 코틀린은 JVM을 대상으로 만들어졌기 때문에 자바 코드를 코틀린에서 쉽게 사용할 수 있다. 주로 자바에 없는 코틀린 기능으로 문제가 발생하는데 이를 해결하는 방법들을 알아보자. 자바 코드를 코틀린에서 사용하기 1. 자바 메서드와 필드 자바 메서드를 아무 문제없이 코틀린 함수처럼 노출시킬 수 있다. 각 언어의 내용에 따라 뉘앙스 차이는 있을 수 있다. 자바 언어로 된 Java 클래스 public class Java { private String hello = "Hello"; public String getHello() { return hello;.. 더보기 [코틀린] DSL (도메인 특화 언어) 안드로이드 개발하는 kancho입니다. 이번 포스팅에서는 코틀린의 DSL(도메인 특화 언어)에 대해 알아보고자 합니다. '코틀린 완벽 가이드' 책을 참고하였습니다. DSL (도메인 특화 언어) 특정 기능이나 영역을 위해 만들어진 언어를 말하며 코틀린으로 도메인 특화 언어와 비슷한 특별한 API를 설계하는 것이다. 단순성이 주된 장점이다. 연산자 오버로딩 코틀린 내장 연산자(+, -, *, / 등등)에 대해 새로운 의미를 부여할 수 있는 언어 차원의 기능이다. 연산자를 구현할 때 관습에 따라 operator 키워드와 함께 확장 함수나 멤버 함수를 정의하면 된다. // times라는 이름의 관습을 통해 정의 operator fun String.times(n: Int) = repeat(n) // 2개의 식은 .. 더보기 이전 1 2 3 4 5 6 7 다음