본문 바로가기
반응형

[Android]33

Paging3 + Room 이틀동안 삽질 후 성공 정리 채팅 관련 앱을 개발하고 있었다 필요한 기능은 오프라인 페이징 기능이었다. Room에서 데이터를 받아오는데, 모든 데이터를 한번에 받아오는게 아니라 필요한 데이터만 받아서 관리하는 페이징 기능이 필요했다. 예전에 커뮤니티성 앱을 만든 적이 있어서, 그 때를 참고하려 했었다. 그 때에는 10개의 실질적인 아이템이 있다면, getItemCount()는 11개를 리턴하도록 하여 가장 마지막 아이템 다음의 뷰는 ProgressBar 로 채웠고, 이 progressBar가 보여지기 시작하면 다음 10개의 아이템을 로딩하게 하는 페이징을 구현했었다. 그림으로 본다면 이런느낌! 하지만 이번에는 Android Jetpack의 Paging을 이용해서 구현하고 싶었다. 근데 이게 생각보다 여간 쉬운 일이 아니었다. 내가 .. 2023. 6. 24.
Kotlin combine fun flowWithCombine() = runBlocking { val intFlow = flow { delay(5000); emit(100)} val charFlow = flow {emit('A'); delay(1000); emit('B')} intFlow.combine(charFlow) { num, character -> "$num / $character" }.collect { println(it) } } // 두 개가 모두 set 되어야 처음 호출 시작. fun main() { flowWithCombine() } 출력 : 100 / B 2023. 5. 7.
뒤로가기 두 번으로 앱 종료시키기 ( OnBackPressedCallback ) 안드로이드 33부터 onBackPressed() 가 Deprecated 되었다. 이제 다른 방법을 사용해야 한다. onBackPressedCallback이다. 이걸 이용해서 '뒤로가기 두 번 누를 시 앱 종료' 기능을 구현할 것이다. private lateinit var callback: OnBackPressedCallback var mBackWait:Long = 0 일단 전역변수로 콜백이랑 wait 시간을 초기화하고 이렇게 onAttach 함수, 그리고 onDetach 함수에 대해서만 구현해주면 된다. override fun onAttach(context: Context) { super.onAttach(context) // 뒤로가기 기능 구현 callback = object : OnBackPressed.. 2023. 4. 11.
[Kotlin / 코틀린] Setter 코틀린 클래스는 기본적으로 Setter를 제공해준다. 이를 캡슐화해주는 것이 중요하다. 1. Backing Property class User( private var _name: String ) { val name: String get() = this._name } 2. Custom class User( var name: String ) { fun updateName(name: String) { this.name = name } } 3. data class 근데 JPA에서는 data class를 사용하는게 좋지 않다는 것을 주의한다. = Entity class에서는 data class를 사용하는 것이 좋지 않다. 이유 : equals, hashCode, toString 모두 JPA Entity와는 100.. 2023. 3. 29.
반응형