전체 글
[Kotlin/Basic] 코틀린에서의 함수
1. 함수 선언 문법 보통 코틀린에서의 함수 선언은 다음과 같이 구현할 수 있다. fun max5(a : Int, b : Int) : Int { if(a>b){ return a } else { return b } } a, b를 매개변수로 받아 더 큰 숫자를 반환하는 함수이다. 먼저, 자바하고와의 차이는 public을 생략할 수 있고, 매개변수는 : 타입으로 적어준다. 하지만 위의 코드에서 더욱 코드를 간결하게 할 수 있다. fun max(a: Int, b:Int) = if(a>b) a else b 함수의 전체 중괄호를 빼고 하나의 값이기 때문에 '='으로 표현이 가능하다. 또한, 반환타입이 모두 int이고, '='을 사용하기 때문에 Int는 생략이 가능하다. 주의할 점은 block { } 을 사용할 때 ..
[Kotlin/Basic] 코틀린에서의 예외처리
1. try - catch 코틀린에서도 자바와 동일하게 try-catch를 사용하여 예외처리를 하지만 다음과 같은 차이점이 있다. fun parseInt(str : String) : Int{ try{ return str.toInt() }catch(e : NumberFormatException){ throw IllegalArgumentException("주어진 ${str}는 숫자가 아닙니다") } //catch 문에서 타입이 뒤에 위치하고, new를 사용하지 않음 } 문자를 숫자형태로 반환해주는 방식인데, 만일 숫자형태로 바꿀 수 없는 문자가 오면 예외처리를 하는 코드이다. 자바와 다르게 catch문에서 타입이 뒤에 위치하고, new를 사용하지 않는 차이점이 존재한다. 또한, try catch도 if el..
[JETPACK개론] Activity/Fragment 의 ViewModel 공유
전 글에서는 간단하게 Activity에서의 ViewModel 사용을 해보았다. 이번 글에서는 먼저 Fragment에서 ViewModel을 사용해보자! val transaction = manager.beginTransaction() val fragment = TestFragment() transaction.replace(R.id.frameArea, fragment) transaction.addToBackStack(null) transaction.commit() 먼저 fragment layout을 만들고, 위의 코드와 같이 액티비티에서 framlayout을 형성하여 fragment로 변환해준다. class TestFragmentViewModel : ViewModel() { var countValue = 0 ..
[JETPACK개론] ViewModel ?
ViewModel ViewModel 개요 | Android 개발자 | Android Developers ViewModel을 사용하면 수명 주기를 인식하는 방식으로 UI 데이터를 관리할 수 있습니다. developer.android.com 위의 안드로이드 공식문서를 읽어보면 자세히 나와있지만 처음 접하는 나같은 사람들에게는 어렵게 다가올 수 있다. 정리하자면 ViewModel은 안드로이드의 생명주기를 관리하기 쉽게한다. 다시말해, UI컨트롤러(Activity, Fragment)에서 모든 것을 다 하려고 하면 복잡해지는데, ViewModel을 사용하면 테스트나 관리가 용이해진다. 먼저 간단하게 Activity에서 ViewModel을 사용해보면서 이해해보자!! 위의 그림을 이해하기 위해 다음과 같이 로그를 찍..
[JETPACK개론] View,DataBinding + Adapter
ViewBinding + Adapter view(Acitivty, Fragment)뿐만 아니라 Adapter에서도 ViewBinding을 사용할 수 있다. 먼저, Adapter를 사용하는 리사이클러뷰를 준비하자! class CustomViewAdapter (private val dataSet : ArrayList) : RecyclerView.Adapter(){ class ViewHolder(binding : TextRowItemBinding) : RecyclerView.ViewHolder(binding.root){ val myText : TextView = binding.myText } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int):..