일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- DevelopmentRegion
- notifychanged
- ios
- UIViewControllerTransitioningDelegate
- List
- transformation.map
- GeometryReader
- 기존 앱
- base64 변환
- swift #swift keychain #keychain 사용법
- development language
- detect url
- Tuist
- 스크롤 탭
- 개발자 면접
- oberve url
- pod install
- DataBinding
- swift
- UIPresentationController
- SwiftUI
- 상단 탭바
- url 관찰
- Swift Package Manager
- convert base64
- Android
- Side Menu
- url 추적
- ViewBuilder
- scrolling tab
- Today
- Total
목록모던 안드로이드/Udacity Android with kotlin (10)
버그 잡이
1. LiveData란? An observable data holder class that is lifecycle-aware - 옵저버 패턴이 적용된 (=특정 대상을 관찰하고 변화를 인지하는) -> 최신화 - 생명 주기를 인식하는 (=메모리를 효율적으로 쓰는) 옵저버 패턴이 적용되면 아래 그림 처럼 대상(subject)을 관찰하고 대상(subject)의 상태가 변화했을때 이를 감지할 수 있다. 그 대상을 LiveData로 만들면 옵저버 패턴을 보다 쉽게 구현할 수 있고 UI의 생명주기에 따라서 생성/소멸한다. -> "생명주기가 onStarted, onResumed일때만 data를 update한다." 2. 사용법 1) LiveData 객체 생성 _ in ViewModel val score = Mutable..
1. UI & ViewModel (LiveData는 다음 시간에 다루기에 일단은 크게 두 분류로 나눈다.) UI - 자료를 UI에 표현 - 시스템이나 사용자가 보내는 이벤트를 수신 ViewModel - UI에 보여줄 data를 가지고 있다 UI에 전달 - 어떤 data를 보여줄지 판단(데이터에 대한 계산을 여기서 한다) (GameFragment의 예로 살펴보자) GameFragment는 data를 UI에 나타내준다. button이 클릭된 경우 Fragment는 이 사실을 인식하고 viewmodel에게 알린다. GameViewModel은 점수, 단어 목록, 현재 단어 등에 대한 데이터를 가지고 있다. gameFragment에서 신호가 오면 관련된 data를 처리하고 data를 변경한다.(ui를 참조하여 직..
AAC 관련 공부를 하면서 나는 '왜 이걸 써야하나?' 라는 질문을 계속 던졌다. 항상 나오는 답변이 "Test가 용이하다" 였다. 안타깝게도 지금까지 test를 공부해본 적이 없어서 이에 대해 공감할 수 없었는데 advanced android with kotlin 과정에 서 이와 관련된 갈증을 다소 해결할 수 있었다. 1. Test란 무엇인가? 앱이 버그 없이 잘 돌아가는지 실험해보는 것이다. 예를 들어 TodoList 앱을 만든다고 하였을때 목록이 잘 추가되는지 삭제는 잘 되는지 우리는 실험해보고 버그를 찾고 이를 고친다. 이러한 과정을 정확하게는 Manual Test라고 한다. Manual의 사전적 정의를 살펴보면 '손으로 하는' 이라는 뜻이 있다. 즉, 수동으로 하는 테스트이다. 하지만 우리는 자..
다음과 같은 클래스가 필요하다. - data 클래스 - network api 인터페이스 - viewmodel - fragment 1. data 클래스 - 기본적으로 Article 클래스만 있어면 된다. - 나는 넘어오는 json이 json object가 3번 중첩되는 구조라 이를 처리하기 위해서 class를 추가로 만들었다. data class ResponseData( @Json(name = "tistory") val tistory: Tistory ) data class Tistory( @Json(name="item") val item: Item ) data class Item( @field:Json(name = "posts") val posts: List ) @Parcelize data class Ar..
Bottom Navigation을 사용할때 수직/수평 화면 전환을 하면 activity가 소멸했다 다시 생성되기 때문에 내가 두번째 menu에 있더라도 onCreate에서 setting 한 첫번째 Fragment로 변경된다. ViewModel+ LiveData 를 활용하여 이를 해결할 수 있다. 1. BottomNavigationViewModel - fragment의 상태를 나타내는 LiveData 변수를 만들어준다. - 초기화는 여기서 진행한다 -> ViewModel은 configuration change때 소멸되지 않기 때문에 상태를 유지할 수 있다. - navigation menu 클릭시 updateFragmentStatus() 메서드로 상태만 최신화 해준다. class BottomNavigatio..
기본 리사이클러뷰 만들기는 저번 글 참고 https://jinsangjin.tistory.com/24 [코틀린] Kotlin RecyclerView 각 요소 살펴보기 지금까지는 안드로이드를 공부할때 기능구현에만 중점을 두었다. 이제부터는 각 기능의 요소를 한줄한줄 파헤치며 공부해보고자 한다. (recyclerView 튜토리얼이 아니라 recyclerView 자체에 대한 이해를 높이고자.. jinsangjin.tistory.com LiveData + Room 적용시 Issue 1. LiveData로 감싸진 Room 데이터를 todolist.value처럼 그냥 사용하려면 NPE 발생 viewModel.todoList.let { it.value?.let{ viewAdapter = TodoListAdapter(..
Udacity강의를 들으며 열심히 따라 치고 글로 정리해봤지만 내가 처음부터 직접 만든 것이 아니니 체화가 안 된다. 그래서 간단하게 아래와 같은 todoList를 직접 만들어 보고자 한다. 0. Gradle 추가 //ViewModel implementation "androidx.lifecycle:lifecycle-extensions:$version_lifecycle_extensions" // Room implementation "androidx.room:room-runtime:$version_room" kapt "androidx.room:room-compiler:$version_room" // Coroutines implementation "org.jetbrains.kotlinx:kotlinx-coro..
Room이란? The Room persistence Library provides an abstraction layer over SQLite - SQLite를 편하게 쓸 수 있게 도와주는 라이브러리다. - 일반적으로 내부DB의 개념으로 활용된다. 용어 정리 Room을 이해하기 위해서는 다음 용어를 이해할 필요가 있다. 1. Entity Table row로 table에 저장되는 한 행의 자료이다. ex) 하룻밤 수면 데이터 2. Query "request for data or information from DB table" DB테이블에 대해서 데이터나 정보를 요청하는 행위다. 3. Annotation DB와 연결되는 interface다. ex) @PrimaryKey라는 annotation을 달아주면 해당 ..