깨알 개념/Android 73

[Android] ViewModel - View에 Event 발생시키기

#1 샘플 앱 [Android] ViewModel - View에 객체(ViewModel) 전달#1 개요 #1-1 Data Binding과 ViewModel [Android] Data Binding - View에 객체 전달 #1 객체 전달의 필요성 #1-1 이전 글 Data Binding - 기초 #1 데이터 바인딩 사용 전 #1-1 예시 앱 위과 같은 간단한 앱이 있다. Button을kenel.tistory.com아래에 있는 코드들은 위 게시글의 완성된 앱을 기반으로 수정된 것들이다. #2 목표 (수정할 부분)// package com.example.eventwithviewimport androidx.lifecycle.MutableLiveDataimport androidx.lifecycle.ViewMod..

[Android] Room - UPDATE 연습

#1 이전 글 [Android] Room - 기초, INSERT와 DELETE 연습#1 Room 소개 Room을 사용하여 로컬 데이터베이스에 데이터 저장 | Android Developers Room 라이브러리를 사용하여 더 쉽게 데이터를 유지하는 방법 알아보기 developer.android.com SQLite는 모바일 기기를 위한 kenel.tistory.com이전 게시글의 완성된 앱을 기반으로, 미구현한 RecyclerView를 구현하고, Entity에 UPDATE문까지 적용시켜본다. #2 개요 [Android] RecyclerView - 기초#1 ListView vs RecyclerView화면에 요소(Item)을 100개 표현한다고 해보자. ListView나 GridView 등의 전통적인 Cont..

[Android] Room - Entity, DAO, Database

#1 이전 글 [Android] Room - 기초, INSERT와 DELETE 연습#1 Room 소개 Room을 사용하여 로컬 데이터베이스에 데이터 저장 | Android Developers Room 라이브러리를 사용하여 더 쉽게 데이터를 유지하는 방법 알아보기 developer.android.com SQLite는 모바일 기기를 위한 kenel.tistory.com본 게시글은 Room의 기본을 담은 앱을 만들기 위한 이전 게시글에서 이어진다. 여기서 Room의 3가지 핵심 클래스인 Entity 클래스, DAO 클래스, Database 클래스의 구현을 다룬다. 이전 게시글에서 모듈 수준 build.gradle.kts에서 필요한 라이브러리를 다운로드해야 본 게시글을 진행할 수 있다. #2 Entity, DA..

[Android] Room - 기초, INSERT와 DELETE 연습

#1 Room 소개 Room을 사용하여 로컬 데이터베이스에 데이터 저장 | Android DevelopersRoom 라이브러리를 사용하여 더 쉽게 데이터를 유지하는 방법 알아보기developer.android.comSQLite는 모바일 기기를 위한 SQL Database 엔진이다. SQLite는 수 많은 Android 기기에 탑재되어있다. 안드로이드 개발자라면 SQLite를 잘 다룰 수 있어야 한다. 하지만, SQLite를 생으로 다루는 것은 쉽지 않다. 반복되는 Database Query문 등과 같은 많은 상용구 코드를 반복적으로 적어주어야 하기 때문이다. 그렇기에, Database 작업에 많은 시간이 소요된다. 이상적인 그림이 아니다. 이런 문제를 개선하기 위해서, 구글의 Room Database p..

[Kotlin] Coroutines - LiveData Builder

본 게시글의 Coroutine 개념은 Android 내에서 사용되는 것을 전제로 작성되었다. #1 Coroutine이 쓰인 LiveData 예제 - 전통적인 방법#1은 LiveData 값 할당에 Coroutines가 쓰인 샘플 프로젝트다. #1-1 build.gradle.kts (Module)plugins {    ...}android {    ...}dependencies {    ...    //  Coroutines    val coroutinesVersion = "1.7.3"    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion")    implementation("org.jetbrains.kotlin..

[Kotlin] Coroutines - LifecycleScope

본 게시글의 Coroutine 개념은 Android 내에서 사용되는 것을 전제로 작성되었다. #1 이전 게시글 [Kotlin] Coroutines - ViewModelScope본 게시글의 Coroutine 개념은 Android 내에서 사용되는 것을 전제로 작성되었다. #1 ViewModel 속 전통적인 방식의 Coroutinesimport androidx.lifecycle.ViewModel import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dkenel.tistory.com이전 게시글에서 ViewModel의 수명주기를 참조해, ViewModel이 소멸될 때 알아서 종료되는 CoroutineScope에 대해 다뤘다. 이번엔 그 참조의 대상..

[Android] RecyclerView - Adapter에 인자(Argument) 전달

#1 이전 글 [Android] RecyclerView - 기초#1 ListView vs RecyclerView 화면에 요소(Item)을 100개 표현한다고 해보자. ListView나 GridView 등의 전통적인 Container Widget들은 이 100개의 아이템을 모두 불러온(load)다. 그리고 화면을 스크롤하면 미리 Load되kenel.tistory.com이전 글의 완성된 앱이, Adapter가 인자(Argument)를 전달받도록 수정해본다. 추가로, ViewHolder에 클릭 리스너를 구현하는 예시와 그 클릭 리스너 또한 인자(Argument)로 전달하는 코드도 살펴본다. #2 Adapter가 인자를 전달받게 만들기#2-1 Menu.kt 만들기// package com.example.argu..

[Android] RecyclerView - 기초

#1 ListView vs RecyclerView화면에 요소(Item)을 100개 표현한다고 해보자. ListView나 GridView 등의 전통적인 Container Widget들은 이 100개의 아이템을 모두 불러온(load)다. 그리고 화면을 스크롤하면 미리 Load되어있는 아이템들이 보이는 방식이다. 메모리 효율이 낮다. 반면, RecyclerView는 아이템들을 미리 Load해두지 않는다. 아이템이 화면이 보이기 직전에, 이전 아이템의 껍데기를 재활용(Recycle)해서 그때 그때 Load한다. #2 Adapter RecyclerView.Adapter  |  Android Developersandroidx.appsearch.builtintypes.propertiesdeveloper.android..

[Android] Navigation - 애니메이션

#1 프래그먼트 전환 애니메이션을 적용할 샘플 앱 [Android] Navigation - 기초#1 이전 글 [Android] Navigation - 환경 설정 #1 Navigation#1-1 액티비티 및 프래그먼트 구성의 트렌드요즘 안드로이드 개발의 트렌드는 하나의 액티비티, 여러 개의 프래그먼트다. 이는 구글의 권장사항kenel.tistory.com위 게시글의 완성된 앱을 수정해 프래그먼트 전환 시 애니메이션을 적용해본다. #2 프래그먼트 전환 애니메이션#2-1 Action의 속성Navigation graph를 Design 모드로 연다. 그리고 Action을 클릭하면 Animation이라는 속성을 가지고 있음이 보인다. 즉, 프래그먼트의 전환 애니메이션은 Action이 관리한다는 얘기다. 총 4개의 ..

[Android] Navigation - 기초

#1 이전 글 [Android] Navigation - 환경 설정#1 Navigation#1-1 액티비티 및 프래그먼트 구성의 트렌드요즘 안드로이드 개발의 트렌드는 하나의 액티비티, 여러 개의 프래그먼트다. 이는 구글의 권장사항이기도 하다. 이 트렌드에서 단일 액티kenel.tistory.com위 게시글에서 이어진다. 본 게시글에선 Navigation을 사용하는 샘플 앱을 만들어본다. #2 Navigation 사용하기 - Destination 프래그먼트#2-1 Navigation graph에 Destination 프래그먼트 등록하기우리가 activity_main.xml을 다룰 때 Code 모드, Split 모드, Design 모드 중 하나를 선택해 편집하곤 했다. nav_graph.xml도 그렇다. na..