전체 글
[Kotlin/Basic] 코틀린에서의 반복문
1. for - each //for each val numbers = listOf(1L, 2L, 3L) // : 콜론 대신 in을 사용함 for(number in numbers){ println(number) } 자바에서는 : 콜론을 사용하여 표현했지만 코틀린에서는 in을 사용하여 numbers안에 있는 변수를 차례대로 출력한다! 2. for for(i in 1..3){ println(i) } //downTo, step도 함수 for(i in 5 downTo 1){ println(i) } //1부터 5까지의 공차1인 등차수열을 생성 //공차를 2로 바꿈 for( i in 1..5 step 2){ println(i) } 2-1. for문은 자바하고 많은 차이점이 있다. 첫 번째 for문을 보면 자바에서는 ..
[JETPACK개론] DataBinding 과 data class
DataBinding TLOVER라는 앱을 론칭하면서 DataBinding을 계속 사용해왔고, 블로그에도 개념을 정리했었지만 강의를 들으면서 부족했던 부분을 보완하고 그 부분들을 정리하고자 한다. databinding ? 이름 처럼 데이터를 연결, 결합 해줄 수 없을까? 라고 생각해보면 된다. viewbinding을 사용했을 때 해당 뷰에 있는 id에 접근해서 값을 변경해주었다. 하지만 서버에서 받은 많은 데이터들을 활용하여 값을 변경해줄 때는 binding을 통하여 데이터를 한 번에 저장한다음 xml에서 변경하면 편리할 것이다!!! 바로 databinding을 사용하면 된다! 1. gradle 파일에 다음과 같이 작성하자 buildFeatures{ dataBinding = true } 2. xml파일안..
[Kotlin/Basic] 코틀린에서의 제어문
1. 코틀린에서의 if else fun validateScoreIsNotNegative(score : Int){ if(score !in 0..100){ throw IllegalArgumentException("${score}의 범위 이상") } } 자바에서의 if else문과 차이가 없다. 위에서 주의할 점은 자바에서는 if(score 100) 이렇게 표현했다면, 위의 코드처럼 0..100 이렇게 표현할 수 있다. 또 다른 예시를 살펴보자! fun getPassOrFail(score : Int) : String { return if(score > 50) { "P" }else{ "F" } } 여기서 자바하고와의 차이점을 발견할 수 있다. 자바에서 if~else는 Statement이지만, 코틀린에서는 Exp..
[JETPACK개론] ViewBinding
1. findViewById 위와 같은 xml코드가 있다고 가정해보자. btn1, btn2 가 써져있는 버튼 두개가 생길 것이다. 클래스에서 위의 버튼의 텍스트를 어떻게 변경할까? 맨 처음 생각할 수 있는 것은 findViewById이다. val btn1 : Button = findViewById(R.id.btn1) btn1.text = "abcd" val btn2 : Button = findViewById(R.id.btn2) btn2.text = "abcd" 위의 코드에서는 버튼이 2개라 이 정도로 끝나지만 만일 바꾸고 싶은 버튼이 100개라면 적어도 200줄의 코드를 더 적어야한다. 이렇게 하면 가독성이 떨어지는 문제가 발생한다. 따라서 Kotlin Extensions이 등장했다. gradle파일에 ..
[JETPACK개론] 들어가며
1. 들어가며 아무런 안드로이드, 코틀린 지식 없이 TLOVER라는 앱을 제작하면서 부족한 점을 많이 느꼈다. 자바에 익숙했던 나는 코틀린이라는 언어에 친숙하지 않아 구글링을 진짜 많이 했던 기억이 있다. 결국 앱 론칭에는 성공했지만 전체적인 코드 구성, 및 개발 방식이 마음에 들지 않았다. 아무래도 개발지식 없이 구글링만으로 개발하다보니 부족한 점이 많았다. 나름, 안드로이드 공식문서를 들어가서 신기술을 적용해보기도 하는 등 많은 시도를 하였다. 그러다 JETPACK에 대해서 흥미가 생겼고, TLOVER앱에도 JETPACK navigation을 적용함으로 프래그먼트간 데이터 이동 등 많은 장점을 활용할 수 있었다. 또한, MVVM패턴을 적용하고 싶어 ViewModel, LiveData 등 시도를 해보았..