계산기 앱의 UI를 완성해보도록 합니다. 우선 계산된 화면이 입력되는 부분과 키패드 부분 이렇게 2가지로 나뉘게 됩니다. 계산 화면은 콤포넌트로 완성하고, 키패드 부분은 으로 완성할 것입니다. 아래는 화면이 입력되는 부분입니다. app:layout_constraintVertical_weight 속성으로 화면과 키패드 간의 비율을 설정할 수 있습니다. 키패드를 만들기 위한 뷰로 Table Layout을 사용합니다. 아래와 같이, app:layout_constraintVertical_weight="1.5"로 정의하여, 화면 비율이 1과 1.5로 나뉘도록 합니다. app:layout_constraintTop_toBottomOf="@id/topLayout"고 같이, 해당 레이아웃의 윗 부분이 화면 레이아웃의 아..
1. 업무 삭제 기능 먼저, 삭제 기능을 담당하는 함수를 정의합니다. 업무 추가 기능과 마찬가지로 notifyDataSetChanged( )를 사용해 변동 사항을 어댑터로 보내야 합니다. 삭제를 담당하는 기능은 remove 메소드를 통해서 이루어집니다. private fun deleteTodo(todo: Todo){ data.remove(todo) binding.recyclerView.adapter?.notifyDataSetChanged() } 어댑터 부분의 인자로 리턴값이 없는 함수를 넣어줍니다. val onClickDeleteIcon:(todo: Todo) -> Unit) 처럼, 아이콘 클릭 시 업무 삭제를 의미하는 '표면적인' 함수를 어댑터 인자로 넣어줍니다. 당연히 리턴값이 없으므로 Unit 타입..
뷰 모델 클래스를 사용할 때, 함께 사용할 수 있는 좋은 기능이 라이브 데이터입니다. 라이브 데이터는 관찰 가능한 데이터를 담아두는 클래스입니다. 쉽게 말해, 데이터를 지켜보고 있다가 변경이 되면, 화면을 다시 그려줄 수 있도록 도와줍니다. 먼저 라이브 데이터의 기본적인 구성을 알아 봅시다. 라이브 데이터의 객체를 만드는 방법은 다음과 같습니다. currentName 변수는 라이브 데이터를 식별하는 역할을 합니다. class NameViewModel : ViewModel() { val currentName: MutableLiveData by lazy { MutableLiveData() } ** 뷰 모델 클래스 내용 ** } 이제 액티비티에 정의된 함수 부분을 살펴 봅니다. nameObserver 부분이 ..
해당 프로젝트의 이전에 작성한 코드를 뷰바인딩으로 바꿔보겠습니다. 모듈 단위의 build.gradle에 뷰 바인딩을 선언하면, 레이아웃 XML 파일들의 이름 뒤에 Binding이 붙은 채로 클래스가 생성되게 됩니다. 우선 아래의 코드 처럼, 전역 변수로 binding을 선언하는데, 타입으로는 뷰 결합으로 생성된 ActivityMainBinding을 지정합니다. 그리고 binding에 layoutInflater로 뷰를 가져올 수 있도록 선언하고, view에는 binding.root를 선언합니다. binding.root는 바인딩이 가지는 프로퍼티인데 root를 통해서 어떤 뷰를 가지고 있는지 알게됩니다. 이로써 binding을 사용해 원하는 XML 뷰를 가져올 수 있습니다. private lateinit v..
- Total
- Today
- Yesterday
- 탭레이아웃
- 대한민국 미제사건
- tabLayout
- 미제사건
- Bmi Calculator
- ToDo List 앱 만들기
- 2007년 사건사고
- 인텐트
- 상대적 레이아웃
- 2021년 사건사고
- 리사이클러뷰
- view binding
- 메소드 오버라이딩
- 선형 레이아웃
- 안드로이드 프로젝트
- 2019년 사건사고
- 리스트뷰
- findViewById
- addView
- 애드뷰
- 안드로이드 스튜디오 에러
- notifyDataSetChanged
- 뷰 바인딩
- RecyclerView
- bmi 계산기 만들기
- lazy init
- 안드로이드 앱 만들기
- 자바스크립트 배열
- android adapter
- 안드로이드 어댑터
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |