예전에는 안드로이드에서 뷰에 대한 참조를 하려면 findViewById를 사용해야 했습니다. 그런데 사용되는 XML의 참조 객체가 많아질 수록 사용하기 불편할 뿐더러 반복되는 코드가 지져분해지기 쉽습니다. Butter knife나 extension을 통해 불편함을 해소하긴 했지만 버전 3.6 이상 부터는 안드로이드 뷰 바인딩을 통해 좀 더 편리하게 뷰에 있는 객체에 참조할 수 있게 되었습니다. findViewById를 사용할 경우 단점 느린 속도 타입 캐스팅에 따른 예외 사용자 실수로 Null 참조 자동 생성되는 파일 만약 뷰 바인딩(View Binding)을 사용하게 된다면 다음과 같이 ViewBinding 을 구현하는 임의의 파일들이 생성됩니다. Activity 클래스와 매핑 되는 클래스로 별도로 작..
아이폰과 마찬가지로 모바일 환경에서 가장 많이 사용되는 형태의 UI가 리스트입니다. 안드로이드 리스트 뷰는 안드로이드에서 가장 많이 사용되는 컴포넌트 중에 하나로 다음과 같은 특징을 가지고 있습니다. 레이아웃과 같은 뷰 그룹에 속함 어뎁터(Adapter)를 통해 데이터와 리스트 뷰를 연결 오래전부터 사용 가능 했으며 API Level 1 부터 존재 프래그먼트를 사용할 경우 this 컨텍스트를 사용할 수 없기 때문에 getActivity() 함수를 사용 프래그먼트를 사용할 경우 LayoutInflater를 사용해 뷰를 가져옴 리스트 뷰 생성 아이디가 listview1 인 리스트 뷰를 선언한다. 데이터 정의 다음과 같이 데이터를 정의한다. class MainActivity : AppCompatActivity..
지난 시간에는 네비게이션 컨트롤러를 만들기 위해서 설정을 하고 디자인을 해봤습니다. 오늘은 코드를 작성해서 네비게이션 그래프를 잘 동작하도록 만들어보겠습니다. 안드로이드는 오랫동안 이어져온 v4, v7, v8, v17과 같은 서포트 라이브러리를 통해서 하위 호환을 지원했었는데 이런 오래된 구조를 재 정립하고자 Android extension library (Androidx) 기반의 패키지 구조를 만들게 되었으며 이것들은 모두 젯팩의 구성요소입니다. 다시 말해 서포트 라이브러리와 코틀린 지원 도구 및 여러 라이브러리가 포함된 통합 지원 라이브러리라고 할 수 있습니다. 젯팩 컴포넌트 구성 Architecture - 뷰를 포함한 UI 구성요소의 라이프 사이클 관리 및 LiveData와 뷰 모델, Room 데이..