목록안드로이드(Android) (70)
Simple&Natural
UPDATE 밑에 방법은 뻘짓이고 그냥 AndroidStudio 내 Statistics 플러그인을 사용하면 알아서 계산을 해준다... ㅎㅎ https://plugins.jetbrains.com/plugin/4509-statistic Statistic - IntelliJ IDEs Plugin | Marketplace Shows project statistic. plugins.jetbrains.com 플러그인을 설치하고 하단 statistics -> refresh 를 누르면 아래와 같이 알아서 타입별로 통계를 내준다. 현재 통계를 보니 절반 정도가 Kotlin 코드로 전환되었다. 안드로이드 스튜디오 내에서 전환율을 찾아주는 기능을 찾지 못했다. 그래서 터미널을 이용해 직접 카운팅하는 방법을 사용. 안드로이드..
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..