일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CollapsingToolbarLayout
- BOJ
- View
- activity
- 안드로이드
- room
- sqlite
- 백준
- Algorithm
- 알림
- CoordinatorLayout
- Android
- 코틀린
- lifecycle
- LiveData
- AppBarLayout
- notification
- onMeasure
- DataBinding
- Coroutine
- onLayout
- kotlin
- CustomView
- Navigation
- 알고리즘
- hilt
- recyclerview
- HTTP
- Behavior
- ViewModel
- Today
- Total
목록삽질 (18)
개발일지
Gson을 사용하여 Number Type을 변경할 때 Int형을 Double로 자동으로 변경하는 경우가 있다. Gson은 Number Type을 기본으로 Double로 변경하기 때문인데 TypeToken을 통해 Type을 지정해주자! Gson().fromJson(json, object : TypeToken() {}.type)
Android에서 ConstraintLayout의 Group 기능을 사용하면 쓸데없는 ViewGroup을 줄일 수 있다. ex) 한번에 여러 View의 Visible를 관리할 때 새로운 ViewGroup을 만들어서 ViewGroup하나로 관리할 수 있지만 쓸데없는 ViewGroup이 늘어나며 성능에 영향을 줄 수 있다. 하지만 ConstraintLayout의 Group 기능을 사용할 경우 Group에 Tag 또는 Id로 View를 매핑하여 쉽게 관리할 수 있다. Group기능을 제대로 사용하기 위해선 매핑되는 View들의 Id가 정의되어야 한다. id를 정의하지 않은 View는 Group의 기능을 제대로 사용할 수 없다.
Android에서 Jetpack Navigation Component를 사용할 때 Global Action을 RecyclerView ViewHolder에서 바로 findNavController를 사용하는 경우 종종 does not have a NavController set Exception이 발생한다. * Dialog에서 RecyclerView를 사용하는 경우 자주 발생한다. itemView.findNavController() 위에 문제를 발생하는 코드를 아래로 고치자. Navigation.findNavController(activity, R.id.nav_host) Hilt를 사용하여 DI 패턴을 적용하면 RecyclerViewAdapter에서 Activity나 Fragment를 쉽게 가져올 수 있다.
Dialog.behavior.state를 STATE_EXPANDED로 바꿔주자! BottomSheetDialogFragment에서 예시 override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { return super.onCreateDialog(savedInstanceState).apply { if (this is BottomSheetDialog) { behavior.state = BottomSheetBehavior.STATE_EXPANDED } } }
false
Android에서 jar파일을 추가하거나 dependency를 추가할 때 이런 오류가 종종 발생한다. Gradle에서 패키징 옵션을 수정하자. android { packagingOptions { exclude 'META-INF/DEPENDENCIES' } }
TextInputLayout을 사용할 때 ExposedDropdownMenu와 MaterialAutoCompleteTextView를 사용하여DropdownMenu를 사용할 때 setSelection을 통해 코드로 Item을 선택할 경우 IndexBoundException이 발생한다. => setText를 사용한다.