본문 바로가기

전체 글93

[Android] viewModels vs activityViewModels (Hilt 사용) ViewModel을 초기화할 때 viewModels()만 사용해봤었는데 activityViewModels의 존재를 알게됐어요 두 가지의 차이점에 대해 알아봅시다! 🔍 왜 이렇게 처음보는게 늘 많은지 T_T 멀고도 험한... viewModels() 해당 ViewModel을 초기화하는 Component의 LifeCycle을 따름 activityViewModels() @MainThread public inline fun Fragment.activityViewModels( noinline extrasProducer: (() -> CreationExtras)? = null, noinline factoryProducer: (() -> Factory)? = null ): Lazy = createVi.. 2023. 7. 27.
[Android] DataBinding BindingAdapter 사용하기 데이터 바인딩을 사용할 때 view의 attributes를 커스텀으로 추가해 사용할 때 즉, 쉽게 말하자면 xml에서 원하는 속성을 만들어서 사용하는 방식입니다 어떤 속성을 만드는지에 따라서 무궁무진하게 사용됩니다 :) 기본 형태 @BindingAdapter("xml에서 사용할 명칭") fun setAB(속성과 연결된 뷰 타입, T) { // ... } 실제 코드를 보자면 ImageView에 적용하는 예시니, 첫번째 param은 ImageView이고 함수 안에서 사용될 데이터는 String 값임을 알 수 있습니다 @BindingAdapter("setImgUrl") fun setImgUrl(view: ImageView, url: String) { Glide.with(view).load(url).into(v.. 2023. 7. 27.
[Android] Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.20 (org.jetbrains.kotlin:kotlin-stdlib:1.8.20) and kotlin-stdlib-jdk8-1.7.20 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20) 🔐 어딘가에서 충돌이나서 생기는 거 같은데, 공식적인 해결방법은 없는 것 같고 구글링하다가 제대로 동작하는 부분을 찾았습니다 :) 하나하나 라이브러리 비교하기에는 무리가 있을 거 같아서 ㅠㅠ 아래의 방법을 따라했습니다 🔑 build.gradle(app)에 아래의 소스를 추가합니다 constraints { implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0") { because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib") } implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0") { because("kotlin-stdlib-jdk8 is n.. 2023. 7. 22.
[Git , SourceTree] GitHub 토큰 발급하기 , cherrypick 버전관리를 위해 사용하는 Git Git의 GUI 프로그램으로는 SourceTree를 썼다 하지만 나는 여러명이서 소스코드를 같이 관리해본 경험이 없기때문에 배워야할게 많다.. 토큰 발급받기 2021년 하반기 이후로는 토큰을 반드시 사용하도록 변경되었다 Github - 프로필 - settings 선택 Developer Settings 선택 developer settings -> generate new Token (classic) 선택 만료일은 필요한 만큼 정하고 , scope는 전체를 체크했다 ⭐️ 토큰 생성 후 꼭 꼭 꼭 저장해두기 CherryPick 원하는 커밋만 가져오고 싶을 때 예를 들어, feat/a에서 2개를 커밋한 후 첫번째 커밋만 가져오고 싶을 때 1. feat/a 생성 후 2개 커밋 2. .. 2023. 7. 20.
[kotlin] 가장 가까운 같은 글자 문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다. 예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다. b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다. n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표현합니다. a는 자신보다 두 칸, 네 칸 앞에 a가 있습니다. 이.. 2023. 6. 30.
[Android] Livedata setValue, postvalue Livedata를 쓰면서 setValue, postValue의 차이점을 명확히 모르고 있었다 둘 다 값을 적용하지만 무슨 차이가 있을까? setValue void setValue (T value) 메인쓰레드에서 호출되는 함수, 메인쓰레드에서 값을 바로 변경한다 공식문서에 보면, setValue에 아래와 같이 설명되어있다 If you need set a value from a background thread, you can use postValue(Object) setValue는 메인쓰레드에서 호출되기 때문에, 백그라운드에서 값을 설정하려면 postValue를 사용해야한다 postValue 백그라운드에서 값을 설정하려면 postValue를 사용한다 안드로이드 스튜디오에서 postValue를 눌러보면 아래와.. 2023. 6. 23.