[Kotlin] Sealed class 란?
·
기타/Android
Sealed class 란? Sealed class 와 interface 는 상속에 대한 제어를 제공하는 제한된 클래스 계층이다. when으로 타입 검사할 때 문제점 코틀린 컴파일러는 when을 사용하여 타입을 검사할 때 꼭 else 분기를 덧붙이게 강제한다. 의미 없는 else 분기가 생길 수 있다. 이후 새로운 하위 클래스를 추가하더라도 컴파일러가 when이 모든 경우를 처리하는지 제대로 검사할 수 없다. interface Expr class Num(val value: Int) : Expr class Sum(val left: Expr, val right: Expr) : Expr fun eval(e: Expr) : Int = when(e) { is Num -> e.value is Sum -> eval(..
[Kotlin] Scope functions(let, run, with, apply, also) 정리
·
기타/Android
Scope functions(범위 지정 함수)란? Kotlin standard library에서는 컨텍스트 객체에 대한 작업들을 블록내에서 수행하도록 하는 함수들을 포함한다. 블록 안에서는 객체의 이름없이 객체에 접근할 수 있다. 이에 따라 코드를 보다 간결하고 읽기 쉽게 만들 수 있다. 이러한 함수들을 Scope functions라고 한다. Scope functions 종류 및 차이점 Scope functions 종류 함수 컨텍스트 객체 참조 반환 값(전체 식의 결과) 확장 함수 유무 let it 람다의 결과 예 run this 람다의 결과 예 run - 람다의 결과 아니오(컨텍스트 객체 없이 호출된다.) with this 람다의 결과 아니오(컨텍스트 객체를 인수로 사용한다.) apply this 컨텍..
[Android] RecyclerView 스크롤을 특정 위치로 이동
·
기타/Android
사용자가 앱을 사용하면서 화면의 스크롤을 내리다가 갱신하기 위해서 또는 다른 이유들로 스크롤의 포지션을 바꾸고 싶어 합니다. 일반적으로 많이 사용하는 예로는 자신이 보고 있는 프래그먼트가 선택 된 하단바를 다시 클릭 했을 때, 최상단으로 이동하는 기능을 많이 사용하고 이 예시를 통해 설명하고자 합니다. MainActivity위에서 HomeFragment가 동작하고 BottomNavigation은 MainActivitiy, RecyclerView는 HomeFragment에 있다고 가정합니다. * 메인 액티비티 * binding.bottomNavigation.setOnItemSelectedListener { when(it.itemId) { R.id.tab1 -> { if(binding.bottomNaviga..
[Android] Toolbar 뒤로가기 버튼 만들기
·
기타/Android
※ 앞으로 작성 할 내용은 툴바를 만들었다는 가정하에 진행됨으로 만들지 못하신 분은 참고하시면 됩니다. ※ https://jeongnote.tistory.com/81 [안드로이드] Toolbar(상단 바) 설정하기 Toolbar 란? ▶ 밑의 그림과 같이 상단에 앱 제목과 핵심 기능들을 모아놓은 바 형태입니다. Toolbar vs ActionBar ▶ 안드로이드 스튜디오에서 프로젝트를 처음 만들면 ActionBar를 앱 바로 설정합니다. jeongnote.tistory.com ※ 완성된 결과물 ※ 예제 ▶ MainActivity에서 MainActivity2로 버튼을 통해 이동 후, MainActivity2에서 뒤로가기 버튼을 통해 다시 MainActivity로 이동 할 예정입니다. 1. 먼저 Activi..