Android87 ListAdapter의 submitList와 notifyDataSetChanged의 차이 정리 배경 최근 프로젝트를 진행하다 ListAdapter를 활용해 데이터가 추가되었을 때 RecyclerView가 갱신되는 화면을 구현했습니다. 하지만 submitList를 호출해줬지만 화면이 갱신되지 않아 어려움을 겪었는데 그 이유를 분석해보려 합니다. Layout의 경우 RecyclerView의 사이즈 변경에 대비해 wrap_content를 설정해준 모습입니다. 버튼 클릭 시 데이터를 submitList를 통해 adapter로 전달하고 있습니다. 문제 당시의 간략한 UI 구성은 다음과 같습니다. 문제점 분석 1. RecyclerView.Adapter와 ListAdapter 비교하기 일단 이 경우를 파악하기 위해 기존에 잘 동작했던 RecyclerView.Adapter와 ListAdapter를 비교해보.. 2023. 4. 28. [Android] Toml은 무엇인가요? - Gradle Version 관리 개요 저는 주로 프로젝트에 BuildSrc와 kts를 주로 사용해왔습니다. 하지만 다른 프로젝트에 toml이 적용되어 있었고 저는 library를 추가하고 싶은데 libs.hilt 와 같은 형태로 되어있어서 어떻게 사용하는거지? 라는 생각이 들었고 이번 기회에 정리해보고자 합니다. Toml이란 무엇일까? TOML(Tom's Obvious Minimal Language)은 읽기 쉬운 최소한의 구성 파일 형식을 목표로 삼고 있습니다. TOML은 해시 테이블에 분명하게 대응되도록 설계되어있습니다. TOML은 다양한 언어로 된 데이터 구조를 쉽게 구문분석할 수 있어야 합니다 by https://toml.io/ko/v0.5.0 사이트에 다음과 같이 정의되어 있습니다. Android Developer 에서도 Mig.. 2023. 4. 12. [Android] Sticky Header 만들기 정리 배경 프로젝트를 진행하며 특정 부분이 스크롤 됨에 따라 상단에 붙어 있어야 하는 기능들이 존재합니다. 이 때 간편하게 적용할 수 있도록 단계별로 정리해보고자 합니다. 저의 경우 아래 그림과 같이 배너 (가로 스크롤), 카테고리 (스크롤 시 상단 고정), 컨텐츠(ViewPagers 가로 스크롤 with 내부 RecyclerView)를 가진 형태를 기준으로 테스트해보겠습니다 Sticky Header 만드는 방법 1. 오픈소스가 존재합니다 구글에 StickyScrollView Github 라고 검색하게 되면 amarjain07님께서 만들어주신 StickyScrollView가 있습니다. 또한 사용법 역시 간단해서 빠르게 구현할 수 있습니다. https://github.com/amarjain07/Sticky.. 2023. 4. 9. [번역] Android Development | Best Practices | by JGeun 해당 글은 공부를 위해 원본을 번역하였습니다. [원본 글] Android를 하면서 어떻게 개발을 해야하는지에 대한 방향성을 제시해줄 수 있을 것 같아 번역하게 되었습니다. Android development는 모바일 개발 시장에 계속 지배하고 있습니다. 재밌는 프로젝트, 높은 보수, 그리고 수 많은 일자리 전망은 개발자들이 안드로이드 운영체제의 흥미로운 세계로의 여정을 시작하게 만드는 이유 중 일부일 뿐입니다. 일부 전문가들은 특히 코틀린의 추가와 구글의 정책 개선과 같은 최근 업데이트 이후로 안드로이드 기술을 배우기 더 없이 좋은 시기라고 말합니다. 안드로이드 개발을 한지 5년이 지났고, 새로운 것을 배우지 않은 날이 단 하루도 없었습니다. 세월이 흐르면서 제가 깨달은 것은 다음과 같습니다. 단지 코드.. 2023. 3. 5. [Android] API 키 관리하기 - Groovy, KTS ApiKey를 왜 숨겨야 하는걸까? 깃허브의 모든 커밋과 리뷰는 기록이 남습니다. 만약 ApiKey와 같은 중요한 정보들이 제대로 처리하지 않고 기록에 남는다면 소중한 정보들이 노출되므로 조심해야 합니다. 이번 포스팅에서는 어떻게 하면 이런 정보들을 관리할 수 있는지에 대해 정리해보고자 합니다. 관리하는 방법 1. gitignore에 기록이 남지 않았으면 하는 파일들을 명시 우선, 가장 먼저 깃으로의 노출을 막아야할 것은 local.properties입니다. 우리는 여기에 API 키를 포함한 중요 정보들을 저장하고 관리할 것입니다. 그 이후에 /build 경로를 막습니다. 해당 경로에 BuildConfig가 존재하는데, 저희가 local.properties에서 키값을 불러오면 BuildConfig에 명시.. 2023. 2. 27. [Image] JPEG, PNG, BMP, GIF, SVG, Webp에 대해 알아보자 각 이미지 타입에 대해 알기 전 먼저 알아야할 몇 가지 요소에 대해 정리하고 넘어가보겠습니다. 1. Lossless(무손실) & Lossy(손실) Lossless: 이미지를 압축해도 이미지의 Quality는 손상되지 않는 것 Lossy: 이미지를 압축하여 크기를 줄이지만 이미지의 Quality는 손상되는 것, 만약 이미지를 손실 압축 포맷으로 변환하여 계속해서 저장하게 되면 이미지의 퀄리티는 점점 나빠짐 2. Indexed color & Direct Color Indexed Color: 제작자에 의해 Color Map이라는 곳에 제한된 수의 색상 (256가지의 색상)을 가진 Palette로만 저장할 수 있는 속성 Direct Color: 제작자가 직접 선택하지 않은 수천가지의 컬러를 저장할 수 있는 속성.. 2023. 2. 11. [Android] BaseFragment 만들기 문제 배경 Android에서 Binding을 처리할 때는 항상 연결과 해제를 구현해줘야 합니다. class TestFragment : Fragment() { private lateinit var _binding: FragmentTestBinding val binding: FragmentTestBinding get() = _binding!! override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ) { _binding = DataBindingUtil.inflate(inflater, R.layout.fragment_test, container, false) return bindi.. 2023. 2. 2. [Android] Gradle을 KTS로 마이그레이션 하기 Kotlin-dsl? 저는 지금까지 Groovy 기반의 gradle파일들로 라이브러리를 선언하고, project단위의 gradle에서 각 라이브러리 버전을 관리했었는데 Groovy 기반이 아니라 Kotlin 파일로 gradle을 관리할 수 있다는 것을 알게 되었습니다. Groovy -> KTS로 migration하는 방법을 소개하고 있습니다. DSL? Domain Specific Language의 약자이며, 반대 의미로는 GPL Global Purpose Language가 있습니다. 특정 도메인에 국한되어 사용되는 언어라는 의미이며, Kotlin이 이런 DSL에 해당합니다. 앱을 개발하면서 프레임워크나 라이브러리를 사용할 때, 제공되는 언어를 사용하게 되는데 이 때의 언어가 DSL입니다. Groovy v.. 2023. 2. 2. [Android] OkHttp Interceptor로 서버 Response 변형하기 문제 배경 대부분 어플리케이션을 만들 때 서버와 API통신을 하며 json을 주고받고 있습니다. 클라이언트와 서버 사이의 API 데이터에는 서버 통신이 잘 되었는지, 응답이 잘 갔는지, 잘못된 형태로 보내진 건 아닌지에 대해 확인하기 위해 resultCode, message, data와 같은 형식으로 제공되며 data는 정말 다양한 형식으로 올 수 있습니다. 예전의 저는 api 데이터를 받기 위해 항상 아래와 같은 data class를 매번 생성해주곤 했습니다. data class ServerResponse { val resultCode: String, val message: String, val data: ServerData } data class ServerData { val id: Long, val.. 2022. 12. 22. 이전 1 2 3 4 5 6 7 8 ··· 10 다음