본문 바로가기

전체 글

(271)
[안드로이드] 예제:MVVM+AAC를 이용한 RecyclerView 5 - BindingAdpater BindingAdapter 1~4까지의 문서를 통해 리사이클러뷰의 큰 뼈대가 완성되었다. 이번엔 리사이클러뷰 아이템 xml에 ImageView를 삽입하여 이미지를 데이터 바인딩하려고 한다. 이미지를 바인딩하기 위해서는 BindingAdapter가 필요하다. BindingAdapter란 xml의 특정한 속성 값을 세팅하기 위한 라이브러리이다. 예를들어 위에서 설명한 이미지뷰의 이미지 url 설정 등이 있다. 잘못된 코드 아래 코드를 보면 String 값을 그대로 imageSrc에 삽입하고 있다. 이는 바로 오류를 뿜을 것이다. 정상적인 코드 BindingAdapter를 위한 object를 만들고 annotation으로 정의해주어야 한다. 이때 메서드의 첫번째 변수는 BindingAdpater를 적용할 vi..
[안드로이드] 예제:MVVM+AAC를 이용한 RecyclerView 4 구현 과정 1. 프로젝트 구성 2. Room 영속성 라이브러리 관련 클래스 구현 3. Repository 구현 4. ViewModel 구현 5. RecyclerViewAdapter 구현 6. MainActivity 구현 7. AddActivity 구현 MainActivity.kt : UI Controller(View) 먼저 xml 파일을 살펴보자. activity_main.xml 위를 보면 data의 변수로 MainActivity, ViewModel이 존재한다. 이는 관찰을 위한 변수이다. 그 다음 MainActivity를 살펴보자. MainActivity.kt class MainActivity : AppCompatActivity() { private lateinit var binding: Activit..
[안드로이드] 예제:MVVM+AAC를 이용한 RecyclerView 3 구현 과정 1. 프로젝트 구성 2. Room 영속성 라이브러리 관련 클래스 구현 3. Repository 구현 4. ViewModel 구현 5. RecyclerViewAdapter 구현 6. MainActivity 구현 7. AddActivity 구현 MainViewModel.kt : ViewModel MainViewModel은 repository 객체를 생성하여 관찰한다. class MainViewModel(application: Application): AndroidViewModel(application) { private val repository = Repository(application) private val todos = repository.getAll() fun getAll() : Live..
[안드로이드] 예제:MVVM+AAC를 이용한 RecyclerView 2 구현 과정 1. 프로젝트 구성 2. Room 영속성 라이브러리 관련 클래스 구현 3. Repository 구현 4. ViewModel 구현 5. MainActivity 구현 6. RecyclerView 구현 7. AddActivity 구현 Todo.kt : Entity id, title, decripton 필드를 가진 data class를 정의한다. @Entity data class Todo( //autoGenerate는 null을 받으면 ID 값을 자동으로 할당해줌 @PrimaryKey(autoGenerate = true) var id: Int?, @ColumnInfo(name ="title") var title: String, @ColumnInfo(name="description") var descr..
[안드로이드] 예제:MVVM+AAC를 이용한 RecyclerView 1 개요 본 문서에서는 MVVM(Model-View-ViewModel)과 AAC(Android Architecture Component)를 이용한 리사이클러뷰를 구현하는 것을 목표로 한다. Todo 리스트를 구현할 것이도 동적으로 추가, 삭제, 편집이 가능하다. 간단하게 구현결과를 보면 다음과 같다. 그리고 기본 언어는 kotlin을 활용한다. 전반적인 프로젝트 구조 구현 과정 1. 프로젝트 구성 2. Room 영속성 라이브러리 관련 클래스 구현 3. Repository 구현 4. ViewModel 구현 5. MainActivity 구현 6. RecyclerView 구현 7. AddActivity 구현 (구현 상세 내용 및 프로젝트 과정은 현재 대폭 수정되었습니다.- 2020.08.21) 1. 프로젝트 구성..
[안드로이드] 8. Navigation 심화 이전 문서 리뷰 전 문서에서 Jetpack의 navigation을 통해 MainActivity에서 코드 한줄로 bottomNavigationMenu를 통한 프래그먼트 전환이 가능했다. 이번에는 navigation의 argument, actions를 알아볼 것이다. Argument 말 그대로 화면에서 받을 인자를 설정할 수 있다. 기본적인 int, float 뿐만 아니라 enum 등도 가능하고 배열도 전달이 가능하다. 이를 통해 우리는 Bundle을 통한 값을 전달하는 과정을 더 이상 하지 않아도 된다. Actions 액션은 네비게이션의 이동에 대한 속성이다. navigation xml 파일에서 한 프래그먼트를 우클릭하면 다양한 액션이 가능한 걸 확인할 수 있다. 위 기능들을 실제 활용하는 예제를 아래에서..
[안드로이드] 7. Navigation Navigation 안드로이드 Jetpack의 네비게이션은 기존의 액티비티와 프래그먼트 사이의 복잡한 코드 구성을 간결하게 바꿀 수 있는 라이브러리이다. 또한 네비게이션 그래프를 통해 화면간의 구조를 시각화해서 볼 수 있다는 것도 큰 장점이다. project 단위의 gradle // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = '1.3.71' ext.navigation_version = '2.2.0-rc04' //새로 추가 repositories { google() jcenter() } dependencies { c..
[안드로이드] 6. DataBinding DataBinding DataBinding을 액티비티에서 데이터를 XML로 전달할 수 있다. 그리고 그 반대 또한 가능하다. 추가로 Java에서는 findViewByID를 더 이상 쓸 필요가 없어진다. (XML을 바인딩 하였기에 리턴값으로 바인딩 객체가 반환되는데 이를 이용.) 하지만, 가장 중요한 점은 MainActvity의 UI 갱신문이 사라지게 된다. 기본 구성 데이터 바인딩 사용을 위해 build:gradle(:app)에 다음을 추가 android{ ... dataBinding{ enabled = true } ... } 그 다음은 xml의 최상위 레이아웃을 layout 태그로 감싼다. result_textView.text = todos.toString() }) //getAll을 할 경우 todos..