android(35)
-
DiffUtil로 RecyclerView효율화하기
최근에 recyclerview를 만지다보니.. diffutil을 조금 더 찾아보는 계기가 되었다. 사실 크게 관심은 없고 다들 그렇게 사용하니 사용하다가 .. ㅎㅎ DiffUtil이란? 리스트를 업데이트하는 유틸리티 클래스. RecyclerView 어댑터의 업데이트를 계산하는 데 사용된다 리스트에 변경된 부분만을 감지하여 갱신시켜주는 것! 예상 시간은 O(N + D^2) class StudentAdapter : ListAdapter(StudentCallback()) { inner class ViewHolder(private val itemView: View) : RecyclerView.ViewHolder(itemView){ ........ ........ } class StudentCallback : I..
2023.05.03 -
onBackPressed() deprecated issuede
이제 쓸 수...없다......onBackpressed................................................... 이렇게 된김에 deprecated 된 onBackPressed()를 핸들링해보자 아래와 같이 할 수 있다 Activity 내부에서 fun AppCompatActivity.onBackPressed(isEnabled: Boolean, callback: () -> Unit) { onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(isEnabled) { override fun handleOnBackPressed() { callback() } }) } // How To Use it : cla..
2023.03.10 -
Kotlin value class
요즘 노션에서 모든 기록을 다 하다보니 티스토리에 소홀해졌다 회고도 꾸준히...쓰고있는ㄷ ㅔ 앞으로의 내용들중 블로그에 쓸 만큼 긴 글들은 기록을 옮겨두려고 한다 그 시작은 value class..! wrapper class(가독성을 높이기 위한 class)의 비용을 줄여보고자 나온 class 아래와 같이 사용하면 된다 @JvmInline value class Color private constructor(val rgb: Int) { companion object { fun rgb(rgb: Int) = Color(rgb) } } value 키워드를 통해 value class를 정의할 수 있다 이렇게 정의된 value class는 컴파일러에 의해 최적화의 대상이 된다 @JvmInline Annotation..
2023.02.16 -
firebase app distribution + fastlane을 이용한 앱 배포 자동화(window)
안쓸라그랬는데말이지 아무리 구글링해도 윈도우 기반으로 FASTLANE 써먹는 자료가 부족해서 쓴다. 까먹기전에 기록한다. CI / CD의 필요성은 알지만 난 지식이 부족해서.... 일단 감이라도 잡기 위해 테스트 앱 배포 자동화를 WINDOW기반으로 해봤다. 귀찮으니까;;핵심만 쓴다. 1. 루비부터 설치한다. Downloads Which version to download? If you don’t know what version to install and you’re getting started with Ruby, we recommend that you use the Ruby+Devkit 3.1.X (x64) installer. It provides the biggest number of compatib..
2022.08.26 -
화면 회전시 이전 데이터 유지하기
코드 지워야돼서 기록한다 원하는 액티비티에 이거 추가 android:configChanges="orientation"(in Menifest) 이런 식으로 데이터 고정 뿐만 아니라, 회전 후에 새로운 화면을 적용한다든지 새로운 액션이 필요하면 override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT // 가로 전환시 || newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE ) { // 세로 전환시 binding..
2022.04.21