뷰 바인딩(view binding) 기존의 방법은 XML 파일에 등록한 뷰를 findViewById() 함수로 얻어서 사용했었습니다. 이렇게 할 경우 일일이 findViewByID()함수로 하나하나 찾아서 가져와야 한다는 애로사항이 있었습니다. 그래서 XML 파일에 선언한 뷰 객체를 코드에서 쉽게 이용하기 위해 나온 방법이 뷰 바인딩입니다. - gradle 파일에 뷰 바인딩 설정 android { (...생략...) buildFeatures { viewBinding = true } } 'build.gradle 파일을 열고 android 영역에서 buildFeatures를 선언합니다. 그 안에 바인딩을 적용하라는 의미로 viewBinding = true로 설정합니다. 그러면 XML 파일에 등록된 뷰 객체를..
기본적인 뷰 살펴보기 안드로이드는 화면을 구성하는 대 필요한 다양한 뷰 클래스를 제공합니다. 텍스트 뷰(TextView) 문자열을 화면에 출력하는 뷰입니다. android:text : TextView에 출력할 문자열/문자열 리소스 지정합니다. / ex) android:text="Hello World!" android:textColor : 문자열의 색상 지정(16진수 RGB 형식)합니다. / ex) android:textColor="#FF0000" android:textSize : 문자열의 크기 지정(숫자 사용, 단위 생략 불가) , 단위는 px, dp, sp 등을 사용합니다. / ex) android:textSize="20sp" android:textStyle : 문자열의 스타일을 지정, bold, it..
화명을 구성하는 방법 안드로이드 앱의 구조는 컴포넌트를 기반으로 적절하게 조합해서 만듭니다. 여러 컴포넌트가 있지만 화면을 출력하는 컴포넌트는 액티비티뿐입니다. 화면에서 내용을 표시하려면 뷰클래스를 이용해 구성해야 합니다. 뷰로 화면을 구성하는 방법은 두 가지가 있습니다. 액티비티 코드로 작성하는 방법 레이아웃 XML파일로 작성하는 방법 package com.example.testing_project01 import android.graphics.Typeface import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.Gravity import android.view.ViewGroup.Layout..
널 안정성 널(null)이란 객체가 선언되었지만 초기화되지 않은 상태, 주소를 가지지 못한 상태를 의미합니다. val data1: String = "hello" /* "hello"라는 문자열 데이터가 저장된 주소가 대입되며 그주소로 문자열 데이터를 이용합니다 */ val data2: String? = null /* 변수가 선언되었지만 이용할 수 없는 상태 */ 널인 상태의 객체를 이용하면 널 포인트 예외가 발생합니다. 널 안정성이란 널 포인트 예외가 발생하지 않도록 코드를 작성하는 것을 말합니다. fun main(){ var data : String? = null val length = if(data == null){ 0 } else{ data.length } println("data.length:$le..
람다 함수 람다 함수는 코틀린뿐만 아니라 많은 프로그래밍 언어에서 제공하는 익명 함수 정의 기법입니다. 코틀린으로 프로그램을 작성하다 보면 람다 함수를 많이 쓰는데, 이는 코틀린에서 고차 함수를 지원하기 때문입니다. 일반 함수는 fun키워드로 선언합니다. 그렇지만 람다 함수는 fun키워드를 이용하지 않으며 함수 이름이 없습니다. { 매개변수 -> 함수 본문 } 람다 함수는 {} 로 표현합니다. {} 안에 화살표(->)가 있으며 화살표 왼쪽은 매개변수, 오른쪽은 함수 본문입니다. 함수의 반환 값은 함수 본문의 마지막 표현식입니다. val sum = { no1:Int,no2:Int -> no1 + no2 } print(sum(2,5))//7 람다 함수는 이름이 없으므로 함수명으로 호출할 수 없습니다. 그래서..
데이터 클래스 데이터 클래스는 data키워드로 선언하면 자주 사용하는 데이터를 객체로 묶어 줍니다. 데이터 클래스는 VO클래스를 편리하게 이용할 수 있게 해 줍니다. class NonDataClass(val name : String, val email : String , val age : Int) data class DataClass(val name : String, val email : String , val age : Int){ lateinit var address : String constructor( name : String, email : String , age : Int) : this(name , email, age){ this.address = address } } fun main(){ va..
상속과 생성자 상속 : 클래스를 선언할 때 다른 클래스를 참조해서 선언하는 것을 말함 상속관계에서 상속 대상이 되는 클래스를 상위 클래스 상속받는 클래스를 하위 클래스 open class Super{ } class Sub: Super(){ } 코틀린의 클래스는 기본적으로 다른 클래스가 상속할 수 없습니다. 만약 다른 클래스에서 상속할수 있게 선언하려면 open키워드를 사용하면 됩니다. 하위 클래스를 선언할 때는 이름 뒤에 콜론(:)을 입력하고 상속받을 상위 클래스 이름을 입력하면 됩니다. open class Super(name: String){ } class Sub1(name: String): Super(name){ // 주 생성자의 경우 } class Sub2: Super{ // 보조 생성자의 경우 c..
클래스와 생성자 class Data{ // 선언부 //본문 내용이 업다면 생략가능 } fun main(){ val data = Data() data.함수() } 클래스의 멤버는 생성자, 변수, 함수, 클래스로 구성됩니다. 코틀린에서 객체를 생성할 때 new키워드를 사용하지 않습니다. 코틀린에서는 생성자를 주생성자와 보조 생성자로 구분합니다. 한 클래스에서 주 생성자만으로도 보조 생성자만으로도 또는 둘 다 선언할 수 있습니다. 코틀린의 생성자는 constructor키워드로 선언하는 함수입니다. 주 생성자 class Data constructor(name:String){ } 위코드는 주 생성자를 선언하는 코드입니다. 주 생성자는 한 클래스에 하나만 존재할 수 있습니다. 주 생성자 constructor 키워드..
조건문 if~else 표현식 다른 언어와 비슷하다 그렇지만 코틀린의 if문은 표현식으로도 사용할 수 있다는 것이 특이합니다 표현식은 결괏값을 반화하는 계산식을 말합니다. fun main(){ var data = 10 var result = if(data>0){ println("data > 0") true// 반환값 } else{ //생략불가 print("data