View와 layout Inflate. + ViewHolder // kotlinx
Anko등을 사용하지 않는 일반적인 경우라면 layout은 xml을 이용해서 만들기 때문에, xml layout을 불러와 실제로 앱에 그려주는 작업(View로 만드는 작업)이 필요한데 이를 inflate라고 한다. val elementView = inflater.inflate(R.layout.layout\_list\_element, parent, f...
Anko등을 사용하지 않는 일반적인 경우라면 layout은 xml을 이용해서 만들기 때문에, xml layout을 불러와 실제로 앱에 그려주는 작업(View로 만드는 작업)이 필요한데 이를 inflate라고 한다. val elementView = inflater.inflate(R.layout.layout\_list\_element, parent, f...
https://developer.android.com/guide/platform/index.html?hl=ko#art Android는 모바일 기기를 위한 Linux 기반 커널과 미들웨어, 핵심 애플리케이션들을 포함한 소프트웨어 스택이라고 볼 수 있다. ART, Android Runtime https://developer.android.com/...
https://developer.android.com/guide/components/fundamentals.html 안드로이드의 메모리 관리 관점에서 프로세스 / 어플리케이션 관리 Android 앱은 일단 기기에 설치되고 나면 각자 자체적인 보안 샌드박스 안에 존재합니다. Android 운영 체제는 멀티유저 Linux 시스템으로, 여기서 각...
변성 (variance) List는 클래스(기저 클래스)이고, List<Int>는 타입이다. 타입 A의 값이 필요한 모든 장소에 타입 B의 값을 넣어도 아무 문제가 없다면 B는 A의 하위 타입(subtype)이다. 하위 클래스와 하위 타입은 미묘한 차이가 있다. A?와 A는 같은 클래스에 속하지만, A는 A?의 하위 타입이고 그 역은 성립...
타입 파라미터 소거 [Kotlin] as와 타입 캐스팅. 런타임 에러. 타입 파라미터 소거(erasure) 런타임 타입 검사 : inline + reified (실체화한 타입 파라미터) inline fun <reified T> isA(value: Any) = value is T >>> isA<String>("...
filterNotNull() : 널이 아닌 값만 추리고 싶은 경우 >>> val l = listOf(1, 2, null, 4, 5) >>> println(l.filterNotNull()) [1, 2, 4, 5] Note ) 걸러내고 난 결과 컬렉션의 타입은 null이 제거되었으므로 List<Int> 타입...
코틀린에서는 원시 타입과 참조 타입(래퍼 타입, 포인터 변수)을 별도 타입으로 따로 구분하지 않는다. 예를 들어 java의 int와 Integer 같이 구분하지 않고, Int 하나로 쓴다. 널이 될 수 없는 타입 은 컴파일 시 알아서 원시 타입으로 표현할 수 있는건 원시 타입으로 표현해주고, 메소드를 호출하는 등 래퍼 타입이어야 하는 경우 ...
최근 null에 대한 접근 방법은 런타임에 발생하는 NPE를, 컴파일 타임으로 옮기는 것이다. 널이 될 수 있음과 없음에 대한 모든 검사는 컴파일 타임에 수행되기 때문에, 실행 시점에는 널이 될 수 있는 타입과 널이 될 수 없는 타입의 객체가 같아진다. 단, @NotNull 애너테이션이나 Intrinsics...
수신 객체 지정 람다 with : prefix없이 접근하고 싶을 때 with는 원래 파라미터가 2개인 함수다. 그러나 두 번째 인자인 람다를 밖으로 빼서 원래 언어가 지원하는 구문인 것 처럼 사용할 수 있다. 보기 깔끔해진다. with의 람다 내에서는 전달된 객체에 prefix없이 접근할 수 있다. fun alphabet(): String { ...
주로 리스너 계열이 SAM으로 되어 있기 때문에, 리스너에 많이 사용한다. 자바 8 이전에는 무명 객체를 사용했다. button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { . . . } }); 코틀린(또는 자바8)에서는 SAM에 람다를 사용할...