본문 바로가기

전체 글144

[Android] ConcatAdapter onBindViewHolder 여러번 호출되는 현상 https://medium.com/androiddevelopers/merge-adapters-sequentially-with-mergeadapter-294d2942127a Concatenate adapters sequentially with ConcatAdapter Use case example: displaying a list header and footer medium.com CheckList 에서 체크했더니 체크가 풀렸다가 다시 체크가 되면서 반짝이는(?) 버그가 발견되었다. 로그를 찍어보니 CheckList adapter 에서 onBindViewHolder 가 2번 호출되고 있었다. ConcatAdapter 안에 있는 특정 어댑터에서 notifyItemChanged(~) notifyDataSetC.. 2024. 1. 5.
[Android] POST_NOTIFICATIONS Permission 작동 안하는 문제 (dialog not showing) POST_NOTIFICATIONS Permission 작동 안하는 문제 (Android 13 POST_NOTIFICATIONS request permission dialog not showing) 1. Manifest 설정 한 토시도 틀리면 안됨. 근데 잘 썼는데도 permission dialog 가 안떴음;; 2. targetSdk 설정!!! 이거 deprecated 라고 지워버리면 안됨. shit 그러면 POST_NOTIFICATIONS 작동 안합니다 ㅋㅋ 꼭 넣어주세요. targetSdk = 33 잘된다! 2023. 11. 23.
[Android] GitHub Actions CI/CD 안녕하세요 제가 최근에 작성한 GitHub Actions 워크플로우에 대해 설명드리겠습니다. 이 워크플로우는 develop 브랜치에 코드를 푸시할 때마다 안드로이드 앱을 자동으로 빌드하고, 서명한 다음 Firebase App Distribution을 통해 배포합니다. 또한, 작업의 성공 여부에 따라 Slack으로 알림을 보내는 기능도 포함되어 있습니다. 이제 한 줄씩 자세히 살펴보겠습니다. name: dev Build&Upload 워크플로우 이름 설정: dev Build&Upload라는 이름으로 이 워크플로우를 설정했습니다. 이 이름은 GitHub에서 워크플로우를 쉽게 식별할 수 있게 해줍니다. on: push: branches: - develop 트리거 설정: 이 워크플로우는 develop 브랜치에 .. 2023. 11. 14.
Type? State? Type과 State의 구분 SNS 탭에서 게시글을 API를 통해 불러오는 기능을 구현하는 과정에서, 두 가지 주요 동작에 직면했습니다: 가장 최신 100개 불러오기 (FetchFeeds) 특정 ID부터 시작하여 일정 수의 게시글 불러오기 (FetchMoreFeeds) 이 두 API 동작은 각각 세 가지 상태(로딩, 성공, 실패)를 가지며, 상태별로 다른 UI 변화를 요구합니다. 이는 결국 각 API에 대해 세 가지 상태 변화에 대응하는 로직을 개발해야 함을 의미합니다. 본 글에서는 이 과정에서 겪은 문제와 해결 방법을 공유합니다. 안 좋은 예시: 초기 접근 방법 초기에는 'Type'을 기준으로 상태 변화를 구분하려 시도했습니다. 아래는 초기 코드 예시입니다: DataStatus Sealed Class:.. 2023. 11. 14.
Copliot 근황 ㄷㄷㄷㄷㄷㄷㄷ GitHub 유니버스 2023 https://www.youtube.com/watch?v=NrQkdDVupQE Thomas는 파괴적인 혁신이 있었던 지난 대회처럼, 이번 신제품 발표 대회에서도 기대를 하고 있어요. 이번 발표 이후 소프트웨어 개발의 근본적인 변화가 일어날 것이라고 예측하며, 이번 대회는 오랜 준비 이후 작별인사를 할 수 있는 숙명이라고 생각합니다. 2020년, GitHub은 GPT-3 모델을 이용하여 개발자들의 문제를 해결하려는 시도를 하였어요. 이를 위해 203개의 시험 문제 중 93%의 정확도로 풀었으며, 발전을 위한 출발점이 되었죠. 초기에는 회의적이었던 구성원들도 발전 속도와 결과에 감탄하여 열광하게 된 것으로 밝혀졌어요. 세계 최초의 규모 있는 파편 감마를 개발하여 공동체의 모든 지식을 개인의 손끝에 놓아주는 .. 2023. 11. 13.
[Android] 버저닝 정책 Android 버전 종류에는 versionName 과 versionCode 가 있습니다. versionName 앱의 배포 버전을 나타내는 문자열(String) 사용자에게 공개 됨 앱 갱신에 영향을 주지 않으며 정답이 없어 상황에 맞게 의미를 부여해 주면 된다. android:versionCode 앱의 버전 코드를 나타내는 정수(int) 업데이트를 검사할 수 있는 용도 첫 번째 버전은 1이고, 이후 versionCode를 1씩 증가시켜서 배포 사용자에게 공개 되지 않음 Version Name 1. Version Name 에 Semantic Versioning 기반 버저닝 도입 기존 버전과 호환되지 않게 API가 바뀌면 “주(主) 버전”을 올리고, 기존 버전과 호환되면서 새로운 기능을 추가할 때는 “부(部).. 2023. 11. 3.
[Android] File templates (BottomSheet) https://dvlv.tistory.com/153 [Android] File Templates (Dialog) 2초만에 custom dialog 만드는 법 제가 쓰는 File Templates 를 소개합니다. 위치는 여기입니다. '+' 눌러서, 원하는 template 이름을 입력합니다. 그리고 이렇게 적어줍시다. 그리고 template 코드 적는 란에 dvlv.tistory.com 2초만에 BottomSheet 바텀시트 구현하기 전 게시글에 이어, BottomSheet 도 공유합니다. .kt package ${PACKAGE_NAME}; import android.os.Bundle import android.view.LayoutInflater import android.view.View import an.. 2023. 11. 2.
[Android] File Templates (Dialog) 2초만에 custom dialog 만드는 법 제가 쓰는 File Templates 를 소개합니다. 위치는 여기입니다. '+' 눌러서, 원하는 template 이름을 입력합니다. 그리고 이렇게 적어줍시다. 그리고 template 코드 적는 란에 아래 코드를 복붙해주세요. package ${PACKAGE_NAME}; import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.D.. 2023. 11. 2.
[Android] letter capitalization + done button In EditText, apply keyboard first letter capitalization option along with changing to done button EditText에서 완료 버튼으로 변경과 함께 키보드 첫 글자 대문자 옵션 적용 You cannot apply the above two functions together from EditText to xml. However, if implemented programmatically with kotlin as below, it works normally. fun EditText.setImeDone() { imeOptions = EditorInfo.IME_ACTION_DONE setRawInputType(InputType.TYPE_TE.. 2023. 2. 10.