본문 바로가기

분류 전체보기

(38)
ROOM 1. 정의 - SQLite를 쉽게 사용할 수 있는 데이터 베이스 객체 매핑 라이브러리 - 쉽게 Query를 사용할 수 있는 API 제공 - Query 결과를 LiveData로 해 데이터베이스 변경될 때마다 쉽게 UI 변경 - SQLite 보다 룸 권장 2. 주요 3요소 1) @Database - 클래스를 데이터베이스로 지정하는 annotation, RoomDatabase를 상속받은 클래스 - Room.databaseBuilder 사용해 인스턴스 생성 2) @Entity - 클래스를 테이블 스키마로 지정하는 annotation 3) @Dao - 클래스를 DAO로 지정하는 annotation 기본적인 insert, delete, update SQL 자동 복잡한 SQL 직접 💡 annotation : 코드에 ..
Parcelize 정의 - 안드로이드 컴포넌트나 Fragment간에 클래스로 데이터를 주고 받을 때 사용 사용법 1. build.gradle(Module:app) plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' //추가 id 'kotlin-parcelize' id 'kotlin-android' } 2. data class 모델 변경 import android.os.Parcelable import kotlinx.parcelize.Parcelize @Parcelize data class TodoModel( val title: String?, val description: String? ) : Parcelable 3. Intent로 데이터 넘겨주..
어댑터뷰 Adapter View 1) 정의 여러 개의 항목을 다양한 형식으로 나열하고 선택할 수 있는 기능 제공하는 뷰 리스트 뷰 (List View) : 항목을 수직으로 나열 그리드 뷰 (Gird View) : 항목을 격자 형태로 나열 표시할 항목 데이터를 직접 관리 X, 어댑터라는 객체로부터 공급 받음 2) Adapter 데이터 관리, 데이터 원본과 어댑터 뷰 사이의 중계 역할 데이터 원본이 어댑터에 설정 + 어댑터 뷰에는 어댑터 설정 getCount() : 현재 어댑터가 관리하는 데이터 항목의 총 개수 getView() : 화면에 실제로 표시할 항목 뷰 getItem() : 특정 위치의 항목을 선택했을 때, 선택된 항목 getItemId() : 특정 위치의 항목을 선택했을 때. 항목 Id 3) Adapter..
디자인 패턴 디자인 패턴 - 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우 정리 - 자주 발생하는 문제에 대한 검증된 해결 1) Strategy (전략 패턴) --수정-- 2) Observer 패턴 - 코드에서 다른 객체의 상태변화를 관찰하는 패턴 - 예시 GUI : 아이디가 5자 이상인 경우, 5자를 입력해야지 버튼 활성화 채팅 프로그램 : 상대방이 입력하고 있습니다. 메세지 출력 3) Decorator 패턴 - 객체에 추가적인 요건을 동적으로 첨가 - 기본 특징 + 추가 4) Singletone 패턴 - 내부적으로 인스턴스가 1개만 존재 - 어디에서든 인스턴스에 접근 할 수 있도록 해주는 패턴 - 예시 유저 매니저 : 내부적으로 메모리에 User 정보 저장 클래스에서 User 생성하면 다른 클래스에서 정보..
OOP 정리 OOP (객체지향 프로그램) 1) 정의 - 유지보수가 편할 수 있도록 사물의 상태와 행동을 클래스로 구현 - 추상화, 캡슐화, 다형성, 상속화 2) 추상화 - abstract class - 공통된 상태와 행동들을 정의 + 공통되지 않은 것들을 숨겨서 분리 - 각 객체에 공통된 속성은 표시하고 불필요한 정보는 숨겨서 인터페이스와 정보 분리 abstract class Bus() { open fun startEngine(){ println("버스 엔진 시작") } open fun stopEngine(){ println("버스 엔진 정지") } //추상화 abstract fun drive() } class CityBus : com.example.oop.main5.Bus(){ override fun startEn..
Private Q : 엔진의 기어 단수를 관리하는 입장에서 알 필요가 없다. 내부에서 쓰이는 변수 어떻게 숨길 수 있나요? A : Private 정보 은닉 main에서 알 필요 없는 정보 숨김 abstract class Bus(val licensePlate: String) { private var engineGear:Int = 0 var departure = "서울" var arrive = "부산" fun engineStart(){ engineGear++ println("부릉부릉") println("$licensePlate 차량이 엔진을 켰습니다.") } open fun departure(){ println("출발합니다.") println("${departure}에서 ${arrive}로 출발합니다.") } } clas..
알림 1. 정의 앱의 UI와 별도로 사용자에게 앱과 관련한 정보 보여줌 알림 터치하여 해당 앱 열기 가능 + 간단한 작업 가능 (ex. 문자 답하기) 단말기 상단 부분 표시, 앱 아이콘 배지로도 표시 2. 알림 채널 - 알림 만들기 전에 알림 채널 생성! - 알림 활성화나 방식 변경 가능 private val myNotificationID = 1 private val channelID = "default" private fun createNotificationChannel() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // Android 8.0 // 알림 채널 생성 val channel = NotificationChannel(channelID, "def..
Dialog 1. 정의 사용자에게 결정을 내리거나 추가 정보를 입력하라는 메세지 표시하는 작은 창 2. 구조 AlertDialog 클래스 사용해 여러 가지 대화 상자 디자인 빌드 가능 1) 제목 콘텐츠 영역이 채워져 있는 경우만 사용 가능 선택사항 - 없어도 됨 2) 콘텐츠 영역 메세지, 목록, 또 다른 맞춤 레이아웃 3) 작업 버튼 대화 상자 하나에 작업 버튼이 세 개를 초과하면 안됨 3. 다이얼로그 예제 activity_main.xml 1) 기본 다이얼로그 (AlertDialog) // 1. 기본 다이얼로그 binding.btn1Alert.setOnClickListener { var builder = AlertDialog.Builder(this) builder.setTitle("기본 다이얼로그 타이틀") buil..