일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- UIPresentationController
- DataBinding
- swift
- Tuist
- url 추적
- SwiftUI
- url 관찰
- scrolling tab
- 개발자 면접
- base64 변환
- pod install
- ios
- DevelopmentRegion
- Swift Package Manager
- UIViewControllerTransitioningDelegate
- swift #swift keychain #keychain 사용법
- 기존 앱
- GeometryReader
- detect url
- oberve url
- Side Menu
- notifychanged
- convert base64
- development language
- List
- transformation.map
- 상단 탭바
- Android
- ViewBuilder
- 스크롤 탭
- Today
- Total
목록분류 전체보기 (170)
버그 잡이
최근 시작한 스터디가 있는데 거기서 사전 과제로 내준 것이 pull request를 하는 것이었다. pull request를 하면서 생각보다 삽질을 많이 하였고 git에 대해서 공부할 필요성을 느꼈다. 그러던 중 우연히 찾은 강의가 코드스쿼드 채널에서 올린 git 입문 강의이다. *[유튜브]코드 스쿼드 Git 입문 강의 https://www.youtube.com/watch?v=sB-wnaI-e2k&list=PLAHa1zfLtLiPrxoBo9a1HVmauvE2Mn3xX&index=11 복습 차원에서 영상 내용을 정리해보고자 한다. 기본 용어 정리 clone - 원격 저장소를 복사한다. - 이를 통해 내 pc로 해당 내용을 가져와 작업할 수 있다. add - 커밋하기 전에 저장을 원하는 파일들을 묵는 과정 ..
Bottom Navigation을 사용할때 수직/수평 화면 전환을 하면 activity가 소멸했다 다시 생성되기 때문에 내가 두번째 menu에 있더라도 onCreate에서 setting 한 첫번째 Fragment로 변경된다. ViewModel+ LiveData 를 활용하여 이를 해결할 수 있다. 1. BottomNavigationViewModel - fragment의 상태를 나타내는 LiveData 변수를 만들어준다. - 초기화는 여기서 진행한다 -> ViewModel은 configuration change때 소멸되지 않기 때문에 상태를 유지할 수 있다. - navigation menu 클릭시 updateFragmentStatus() 메서드로 상태만 최신화 해준다. class BottomNavigatio..
Retrofit을 사용하면 네트워크 상황에 따라 데이터가 늦게 오는 경우(Loading)도 있고 못 오는 경우(Error)도 있다. LiveData를 활용하면 간단한 코드로 이를 해결할 수 있다. [순서] 1. status 변수(LiveData) 만들기 2. 네트워크 응답에 따라 status 값 정하기 3. status 변수 observe 하기. 1. status 변수 만들기 *ViewModel.kt - enum class를 이용해서 상태 상수를 선언해주고 - status라는 변수를 LiveData로 만들어준다. enum class BlogApiStatus{LOADING, ERROR, DONE} private val _status = MutableLiveData() val status: LiveData ..
Kotlin + Retrofit + Moshi 을 활용한 네트워크 통신 연습으로 Tistory API를 활용한 블로그 글 정보 json을 받아보기로 했다. 그런데.... 짜임새가 아주 거지같다. {"tistory":{"status":"200","item":{"url":"https:\/\/jinsangjin.tistory.com","secondaryUrl":"","page":"1","count":"10","totalCount":"42","posts":[{"id":"43","title":"(AAC \uc751\uc6a9) LiveData+Room+RecyclerView #DiffUtil","postUrl":"https:\/\/jinsangjin.tistory.com\/43","visibility":"20",..
기본 리사이클러뷰 만들기는 저번 글 참고 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..
내가 지금 만들고 있는 것은 LiveData+ViewModel+Room을 활용한 간단한 todo앱이다. viewmodel에 있는 나의 LiveData이다. 리스트를 LiveData로 만들었다. var todoList = MutableLiveData().apply { value = mutableListOf("initial") } 내가 원하는 것은 아래 명령을 수행하면 ui가 초기화 되는 것이었다. todoList.value!!.add(todo) 하지만 최신화 되지 않았다. *문제의 원인 list를 감싼 LiveData는 observer에 변화를 알려주지 않는다는 사실을 알게되었다. *해결방안 1. https://www.charlezz.com/?p=989 위 블로그에서 해당 문제를 자세히 다루고 있다. 2...
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을 달아주면 해당 ..