RecyclerView에 Selection 라이브러리를 사용하기

Selection RecyclerView를 구현하고 다중 선택 기능을 추가 하기 위해서는 Selection 라이브러리를 사용할 수 있습니다. 안드로이드 내의 사진들을 Grid형식으로 구성하고 Selection으로 다중 선택하는 예제를 만들어 보도록 하겠습니다 Selection 구현하기 의존성 추가하기

or

Key타입 결정하기 더보기…

언어 변경과 AndroidViewModel 안티패턴

https://medium.com/androiddevelopers/locale-changes-and-the-androidviewmodel-antipattern-84eb677660d9을 번역한 글입니다. ViewModel은 화면회전이나 언어 변경에 의한 액티비티 재생성에서도 다시 생성되지 않고 이전 인스턴스가 그대로 남아 유지 되는 특징이 있습니다. 시스템 언어 변경을 하기전에 아래의 ViewModel코드를 보도록 하곘습니다.

이 코드의 문제는 문자열이 생성자에서만 더보기…

[Android] Annotation Processor 만들기

Annotation이란 ? 애노테이션이란 무엇일까요? 사실 우리 모두가 이미 정의된 애노테이션을 쓰고 있습니다. 예를 들면, @Override 어노테이션을 사용하여 메소드를 재정의하고 싱글톤 패턴을 사용하기 위해 @Singleton을 사용하고 @NonNull, @StringRes, @IntRes 등과 같은 애노테이션을 사용합니다. 이러한 각가의 애노테이션에 더보기…

프레그먼트간 통신하는 3가지 방법

프레그먼트 통신(Fragment Commnication) 안드로이드 공식 문서인 Communicate with other fragments에 프레그먼트간 통신하는 방법에 대해서잘 나와있지만, 저는 또 다른 방법들에대해서 설명하고자 합니다. AAC ViewModel 이용 ViewModel을 이용하면 Activity를 라이플싸이클 오너로 등록하여 공통된 뷰모델을 이용할 수 있습니다.  더보기…

List와 LiveData의 사용시 Observer 에게 Notify 언제, 어떻게 해야할까…?

AAC LiveData의 등장으로 데이터바인딩 라이브러리 사용시 MVVM아키텍처와 맞물려 데이터와 UI간의 동기화하는 코드를 많이 사용하고 있습니다. 단수의 Data를 다루는데 있어서 LiveData는 편리했습니다. 기존 BaseObservable을 구현한 클래스에서 notifyChange 또는 notifyPropertyChange를 처리할 필요도없고, 생명주기를 알고있다는 점이 좋았습니다. 하지만, 더보기…

안드로이드에서 Dynamic Proxy 사용하기

Proxy란? 일반적으로 대리자/대리인을 의미하며, 자바에서는 타겟을 감싸서 타겟을 요청을 대신 받아주는 Wrapping Object를 뜻합니다. Proxy 패턴은 디자인 패턴의 일종으로 자바의 Reflect 패키지에 있는 Proxy를 이용하여 원래 객체의 변경 없이 기능을 특정 방식으로 제어 하는 구조를 더보기…

안드로이드와 Java의 Reflection

Reflection이란? Reflection은 자바 언어의 기능중 하나로 프로그램 내부 속성을 조작 할 수 있게 합니다. 예를 들어 Java클래스가 가지고 있는 모든 멤버의 이름을 가져와서 표시 할 수 있습니다. 다른 언어에서는 이러한 기능이 보통 존재하지 않습니다. 예를 더보기…