목록안드로이드(Android) (69)
Simple&Natural
UI를 구현하거나 앱들을 쓰다 보면 보면 특정 editText에 콤마나 단위 등을 고정하여 표시하는 경우가 있습니다. 예를 들면 은행 앱에서 출금 시 자동으로 콤마를 붙여주고 뒤에 '원'이 붙는 경우를 한 번 쯤은 보셨을 겁니다. 이런 화면은 어떻게 구현해야 할까요? 바로 TextWatcher를 사용하면 됩니다. TextWatcher는 안드로이드에서 제공하는 인터페이스로서 EditText의 텍스트 입력이 들어올 때 마다 콜백이 호출됩니다. 3가지 함수를 오버라이드 하게 되는데요. beforeTextChanged onTextChanged afterTextChanged 가 있습니다. beforeTextChanged는 바뀌기 전의 입력을 알 수 있고 onTextChanged는 바뀐 후의 입력을 알 수 있습니다..
DataBinding과 LiveData를 사용하면 여러모로 편리한 점이 많다. 하지만 실제 뷰모델에서 사용하는 데이터와 자료형이 다른 경우가 생긴다. 예를 들면, 잔액을 표시하는 경우 보통 뷰모델에서는 val amount: LiveData = ... 와 같은 형식으로 정의되어 있는데 이를 TextView나 EditText에 보여줄 때는 문자열 타입이 필요하기 때문이다. 양방향 바인딩을 사용하는 경우 이럴 때 어떻게 해야 할지 참 난감해진다. 그럴 땐 BindingAdapter를 사용하면 된다. /** * LiveData 에서는 숫자(Int, Long, BigInteger...) 타입을 유지하고 * EditText 에 표시할 때는 문자열 타입으로 표시해주기 위해 사용함. * BindingAdapter 를 ..
일반적인 MVVM 패턴에서 ViewModel을 편리하게 사용할 수 있도록 Android는 자체적으로 ViewModel 관련 컴포넌트들을 제공하고 있다. 이때, ViewModel은 생명주기를 가지는데 이는 처음 생성할 때 지정했던 ViewModelStoreOwner에 따라 달라진다. 다음 코드를 보자. override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) viewModel = ViewModelProvider( this, MyCommunityListViewModel.Factory( requireAppContainer().communityRepository, requireAppContainer().setti..
cannot access class 'android.support.v4.view.pageradapter' 오류 해결 방법 UltraViewPager라는 외부 라이브러리를 사용하던 도중 다음과 같은 호환성 이슈를 마주하게 되었다. androidx의 PagerAdapter를 구현한 Adapter를 Support.v4의 PagerAdapter를 사용하는 UltraViewPager에 넣어주려고 하였으나 호환이 되지 않는다. 공식문서에 무언가 힌트가 있는지 찾아보자 android.enableJetifier=true를 이용해 기존 타사 라이브러리를 자동으로 이전할 수 있다고 한다. 그럼 내 프로젝트의 gradle.properties를 살펴보자. 응? 해당 flag가 없다. 아래와 같이 한 줄을 추가하고 다시 syn..