반응형

전체 글 199

[코틀린/안드로이드] CustomAdapter 활용하여 RecyclerView 사용하기

activity_main.xml item_recycler.xml viewBinding 설정 data class 생성 package com.greedy.recyclerview import java.sql.Timestamp data class Memo (var no: Int, var title: String, var timestamp: Long) MainAcivity.kt class MainActivity : AppCompatActivity() { val binding by lazy { ActivityMainBinding.inflate(layoutInflater)} override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanc..

[코틀린/안드로이드] Spinner 사용하기 (simple_list_item_1, Adapter)

activity_main.xml viewBinding 설정 MainActitity.kt class MainActivity : AppCompatActivity() { val binding by lazy { ActivityMainBinding.inflate(layoutInflater)} override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(binding.root) /* 스피너의 아이템에 보여 줄 텍스트를 배열 형태로 만든다.*/ var data = listOf("선택하세요", "1월", "2월", "3월", "4월","5월", "6월") /* 생성한 배열 목록을 스피너 목록으로 ..

[코틀린/안드로이드] Intent를 활용하여 Activity 전환하기

activity_main.xml activity_sub.xml viewBinding 설정 예시1) 버튼 클릭시 메인 액티비티에서 서브 액티비티로 전환 MainActivity class MainActivity: AppCompatActivity() { val binding by lazy { ActivityMainBinding.inflate(layoutInflater)} override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(binding.root) /*사용할 액티비티 타입정보를 명시적으로 작성하여 Intent 생성 this : 자기자신(여기서는 MainActivity), 전환 할 ..

[코틀린 / Kotlin] 컬렉션 Set , Map (mutableSetOf() , Pair)

Set mutableSetOf() : 변경 가능한 집합을 생성하는 함수 var mutableSet = mutableSetOf("축구","농구","수영") println("mutableSet default init $mutableSet") /* 값 추가 */ mutableSet.add("야구") println("mutableSet add element $mutableSet") mutableSet.add("축구") //set에는 중복 값을 추가할 수 없다 println("mutableSet add duplicated element $mutableSet") /* 값 제거 */ mutableSet.remove("축구") println("mutableSet remove element : $mutableSet") ..

[코틀린 / Kotlin] 컬렉션 _ List (add, remove, removeAt, contains, listOf ...)

List muableListOf : 변경 가능한 리스트를 선언하는 함수 fun main(){ /* 처음 선언시에 비어있는 상태로 생성 된 리스트는 타입 정보를 유추할 수 없으므로 리스트에 포함 될 자료의 타입을 명시해야 함*/ var emptyMutableList: MutableList = mutableListOf() /* 리스트 생성 시 초기 값을 넣어 생성하게 되면 타입 추론이 가능하므로 명시하지 않아도 됨*/ var mutableList = mutableListOf("사과", "바나나", "메론") println("mutableList default init : ${mutableList}") } 출력 결과 mutableList default init : [사과, 바나나, 메론] add : 요소 뒤 ..

[코틀린 / Kotlin] 상속과 오버라이딩

상속 테스트 1 - 부모 클래스 생성 open class Animail(var name: String, var age: Int, val gender: String){ /* 키워드 비교를 위한 속성 정의*/ open var test1: Int = 0 var test2: Int = 0 /* animail이 가지는 기능 정의*/ fun eat(food: String){ println("${name}이(가) ${food}를(을) 먹습니다.") } fun sleep(hour: Int){ println("${name}이(가) ${hour}시간 동안 잡니다.") } } - Animail을 상속 받는 자식 클래스 생성 class Rabbit(name: String, age: Int, gender: String, var..

[코틀린 / Kotlin] 데이터 클래스

데이터 클래스 단순히 값을 저장하기 위한 용도로 클래스를 활용하려면 data 키워드를 이용해서 정의할 수 있다. 이 때 유용하게 활용할 수 있는 여러 메소드를 자동으로 구현해준다. 단, 주 생성자에 정의 된 속성만 이용해서 메소드의 내용을 구성한다. toString : 객체의 내용 문자열 반환 equals : 두 객체의 속성 값 비교(주소 값 비교 x) copy : 원본 객체 속성 값 복사 된 새로운 객체 생성 hashCode : 객체의 속성 값 비교 componentN: 객체의 속성 값 반환 컬렉션을 사용할 때는 equals, hashCode 등의 메소드가 오버라이딩 되어야 한다(속성 값 동등 비교를 위해) /* class 앞에 data만 붙여주면 됨 */ data class PersonClass(va..

[코틀린 / Kotlin] lazy 와 lateinit 를 활용한 지연 초기화

lazy 해당 속성 값을 사용하는 시점에 값을 초기화 하는 편이 합리적이다 라는 생각으로 만들어진 키워드로 속성에 접근하는 시점에 값의 초기화 작업이 이루어지게 하는 키워드 lazy 키워드를 이용한 속성 값 지연 초기화 class LazyClass(var x: Int){ /* lazy는 var로 선언할 수 없다. * 호출 시점에서 초기화가 이루어지며 최초 한 번만 초기화 된다. * LazyClass만들 때 같이 생성 되는게 아니라 나중에 lazyValue1를쓰고자 하는 시점이 왔을때 안의 구문 동작됨*/ val lazyValue1 by lazy { println("lazy 람다식 내부에서 속성값 초기화 진행") var s = " HELLO " s.trim() } val lazyValue2 by lazy ..

[코틀린 / Kotlin] getter와 setter

getter와 setter 사용 예시 class GetterAndSetterDemo(){ /* 아래의 코드 처럼 작성하면 x*/ var num: Int = 0 set(value){ println("값을 ${value}로 설정") num = value this.setNum(value); //재귀 호출 동작 -> 스택 오버 플로우 발생하기 때문에 field사용해 주어야 함 } /* field 사용하기 */ set(value) { println("값을 ${value}로 설정") field = value //field는 num 필드를 의미(백킹 필드 - 재귀호출 방지) } get(){ println("${field}값을 반환") return field } } fun main(){ var demo = Getter..

[코틀린 / Kotlin] open class, private , protected 속성 설정

클래스에 open 키워드가 없으면 기본적으로 닫힌 클래스 /* 닫힌 클래스는 상속 불가 */ class PublicClass{ } open class /* 상속이 필요한 경우라면 open class 활용 */ open class PublicClass{ } private , protected 키워드로 속성 설정 /* 주 생성자에 접근 제어자(private)를 설정하면 get/set 불가한 속성이 된다.*/ open class PublicClass(var publicProp1: String, private var privateProp1: String){ var publicProp2 = "public prop2" /* private로 설정하면 해당 클래스 내부에서만 사용가능하고, get/set 불가한 속성이 ..

반응형