우선 아키텍처가 왜 중요한지 생각해보자.Android 앱에는 Activity, Fragment, Content Provider, Broadcast Receiver 등 다양한 앱 컴포넌트가 있다. 이 컴포넌트들을 활용해서 사용자 경험을 앱에 녹이게 되는데 핸드폰은 리소스
기존 SearchViewEditTextViewRecyclerView EditText SearchLayout백그라운드stylethemefragmentfragment.xmlfragment.kt
다음과 같이 회원가입 시 약관을 출력하는 화면을 만들어보자!fragment_sign_up.xmllayout_sign_up_terms_list.xml → 바깥의 RecyclerView바깥 Adapterlayout_sign_up_inner_terms_list.xml → 안
화면이 시작했을 때 Focus를 줄 EditTextView의 xml에 다음과 같이 설정.출발할 Fragment에서 키보드 올리기도착한 Framgment에서 KeyListener를 활용해 키보드 내릴 때 코드 → Listener 처리 주의FragmentLayout XML
사용자에게 정보를 표시하는 일반적인 방법 중 하나는 list다. 하지만 list는 전체 콘텐츠를 보기 위한 일부의 작은 창과 같다. 사용자는 list에서 제공되는 정보를 스크롤할 때 더 많은 데이터가 있을 거라고 확신한다. 이게 무슨 말인지는 다음 이미지를 보면 이해가
layout xml에서 if문을 사용하려면 LiveData와 람다식을 알고 있어야 한다.우선은 livedata를 준비하자.ImageView를 클릭하면 viewmodel 안 데이터의 상태에 따라 호출하는 함수를 다르게 하고 싶을 때 다음과 같이 활용한다.viewmodel
onCreateView에서 다음과 같이 실행한다. 그러나 이 방법은 메모리 누수를 일으킬 수 있다.How to set title in app bar with Navigation Architecture ComponentInterfaceFragmentActivity블로그
비동기 프로그래밍에 권장되는 코루틴은 멀티태스킹을 지원하고 단순히 스레드로 작업하는 것보다 레벨이 다른 추상화를 제공한다. 상태를 저장해 중단했다가 재개할 수 있다는 주요 기능이 핵심이다. 따라서 코루틴을 실행되거나 실행되지 않을 수 있다.Job → 생명 주기가 있는
날짜 형식을 지정(날짜 → 텍스트)하고 파싱(텍스트 → 날짜)하는 클래스다.“E MMM d”와 같은 패턴 문자열은 날짜 및 시간 형식의 표현이다. 2018년 1월 4일이면 “Wed, Jul 4”와 같이 된다.E → 요일d → 일M → 월y → 연도Locale 객체는 특
ViewModel을 안전하게 사용하자!사용자에게 결정하거나 추가 정보를 입력하라는 메시지를 표시하는 작은 화면. 전체 화면을 채우지 않고 사용자가 액션을 해야 계속 진행할 수 있다. 일반적으로 다음과 같이 생겼다.Alert DialogTitle (optional)Mes
ViewModel을 구현하는 법은 많은 포스팅에서 봤으니까... 안전하게 사용하는 법을 알아보자!ViewModel은 UI에 필요한 모든 데이터를 보유하고 처리한다. 그래서 뷰 계층 구조에 액세스하거나 Activity나 Fragment의 참조를 보유해서는 안 된다.var
값을 전달 받을 곳에 %s.tools 속성으로 텍스트를 세팅하는 것이 포인트다.아래 코드에서 위 오류가 나는 부분은 어디일까?바로 cost 값을 받는 부분이다. 문자열을 입력 받는데 값이 비어있거나, 유효하지 않은 자료형일 경우 제목과 같은 오류가 난다. 그렇다면 해결
계측 테스트란, 앱을 시작한 다음 상호 작용이 의도대로 돌아가는지 확인하는 UI 테스트다. 실습으로 진행하면서 어떻게 계측 테스트를 하는지 알아보자.시작 전 모듈 단 build.gradle에 다음과 같이 androidx 테스트 라이브러리를 추가해주자. 코틀린 환경이라면
바인딩을 할 때 초기값이 null이어야 하는 이유 Fragment에서 onCreatView()가 호출될 때까지 레이아웃을 inflate할 수 없기 때문에 null을 허용해야 한다. null을 허용하기 때문에 null safety를 위해 ?를 꼭 포함하자! 그리고 계속
사용자는 앱을 다양한 콘텐츠를 접하기 위해 여러 화면을 왔다갔다 이동한다. 이때 Jetpack에서 제공하는 Navigation을 활용하면 단순하게 화면(Fragment) 전환을 구현할 수 있다. 뿐만 아니라 화면 간의 데이터 공유도 훨씬 쉽다!공식 문서는 다음과 같이
ViewModel에서 코루틴 활용하기https://leveloper.tistory.com/213@Volatile이 어노테이션을 활용하면 다른 스레드에서 활용되어도 즉각적으로 보이게 해준다. 변수 선언시 이 어노테이션이 지정되었을 때 값을 메인 메모리에 적재하기
안드로이드에서 앱이 종료되어도 데이터를 관리하는 방법에는 다음 것들이 있다.Shared Preferences → 앱의 간단한 설정값을 저장할 수 있다.SQLite → 다량의 데이터를 저장할 수 있다.그런데 SQLite는 사용하기 어렵고 속도 등에서 까다롭다. 이 SQL
* 거두절미하고, 안됩니다.* 하지만 아무것도 모르는 나는 ViewHolder에 Retrofit을 넣을 수밖에 없었던 피치못할 사정이 있었는데.... 얼레벌레 내가 맞닥뜨린 상황 사용자가 검색한 가수와 비슷한 느낌의 가수를 추천해주는 API를 쓰고 있었다. 근데 이
데이터가 들어오면 그 순서대로 처리가 되는 줄 알았는데 중구난방이었다......생각 않고 코드를 짰다가 낭패를 봤다…우선 예제로 돌릴 나의 삽질 코드부터 보자.1\. 순서대로 Retrofit을 생성해 돌릴 거니까, 반복문에 넣자!2\. getArtistImge()는 이