분류 전체보기
-
1-6. 메모를 작성하는 액티비티로카테고리 없음 2021. 9. 14. 18:54
툴바와 메뉴 아이템은 없어도 상관없다. 메뉴 아이템 클릭 대신 버튼하나를 넣어 메모를 저장하도록 해도 좋다. activity_write_memo.xml menu_item_write_memo.xml(menu폴더의 리소스) AndroidViewModelWriteMemo WriteMemoActivity와 관련된 데이터를 가진다. 액티비티가 비정상 종료될수도 있어 액티비티의 메모 제목, 내용에 해당하는 EditText의 내용을 ViewModel에 실시간으로 저장하기 위해 TextWatcher와 관련된 String 두개를 선언 class AndroidViewModelWriteMemo(application: Application) : AndroidViewModel(application) { //EditText Te..
-
1-5. View(Activity)에서 ViewModel의 LiveData를 옵져빙카테고리 없음 2021. 9. 14. 18:42
activity_memo_list.xml 데이터 바인딩을 사용하여 AndroidViewModel 바인딩 변수 viewModel을 선언하였는데 현재는 사용되지 않으므로 없어도 상관없다. 툴바는 없어도 상관없다. 나중에 기능을 만들기 위해서 추가해놨다. 액티비티 코드의 툴바 설정도 마찬가지 ActivityMemoList 리싸이클러뷰와 어댑터는 다음 포스팅에서 작성 버튼을 누르면 메모 작성 액티비티로 이동. 액티비티가 종료되지 않은 채로 넘어감 onStart에서 뷰모델의 LiveData를 옵져빙하여 변경시 어댑터를 설정하고 리싸이클러뷰 다시 그리기 onRestart의 데이터베이스 쿼리 메모를 작성하고 기존 액티비티로 돌아왔을때 메모 데이터 베이스가 변경되므로 Model의 데이터베이스 쿼리를 통해 Model의 ..
-
1-4. ViewModel에서 Model의 데이터를 Observing카테고리 없음 2021. 9. 14. 18:00
AndroidViewModelMemoList import android.app.Application import android.util.Log import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.Observer import com.project.memoapp.model.Memo import com.project.memoapp.model.RepositoryMemo class AndroidViewModelMemoList(application: Application) : AndroidViewModel(a..
-
1-3. Model클래스를 통하여 메모 데이터베이스 조작카테고리 없음 2021. 9. 14. 17:57
사용자 정의 RepositoryMemo.class AndroidViewModel 내부의 멤버로 선언할 클래스이다. 데이터 베이스 생성때 앱의 private storage에 데이터베이스를 생성하므로 application context가 필요하여 생성자에 application context를 넣을 수 있는 application: Application을 선언하였다. 이 Application은 AndroidViewModel에서 getApplication메서드로 받아올 것이다. import android.app.Application import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData class RepositoryMemo(val ..
-
1-2. Room 데이터베이스를 통한 메모 데이터베이스 작성카테고리 없음 2021. 9. 14. 17:42
메모를 관리하기 위한 데이터베이스 생성 및 조작 Room을 활용하는 법은 reference 참고 추상 클래스 또는 인터페이스로 선언하면 Room이 알아서 구현해준다. Room은 쿼리문법, 테이블 이름, 데이터베이스 이름등등을 컴파일 시점에서 체크가 되므로 runtime중 쿼리실수등으로 인한 crash가 발생하지 않는다. Memo.class import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey @Entity(tableName = "memo") data class Memo( @PrimaryKey(autoGenerate = true) var id: Long?, @ColumnInfo var title:..
-
1-1. 메모 앱 구조카테고리 없음 2021. 9. 14. 17:33
기획은 없어서 힘들겠지만 개발을 하면서 입맛대로 기능을 추가하려고 한다. 메모 리스트를 보여주는 ActivityMemoList 액티비티 관련 View ActivityMemoList (메모 리스트를 보여주는 액티비티) RecyclerView (메모 등을 띄워줄 리사이클러뷰) RecyclerVIew.Adapter (리사이클러뷰에 데이터를 뿌려주는 어댑터. 어댑터는 View에 속하며, 데이터 소스는 ViewModel에 속함) ViewModel AndroidViewModelMemoList (ActivityMemoList와 관련된 데이터 요청을 수신, Model로부터 데이터를 받아옴) 뷰 모델 내부의 멤버인 Model클래스에서 application context를 사용해야 하기 때문에 일반 ViewModel이 아..
-
[AAC] DataBinding -3 <variable>에 뷰모델 변수Android/ArchitectureComponent 2021. 9. 14. 16:42
이전 포스팅 2021.09.11 - [Android/DataBinding] - [Android] DataBinding 2 - generated binding class 데이터 바인딩과 ViewModel, LiveData를 같이 활용해야 하는데 데이터 바인딩과 ViewModel 둘을 활용하다가 막힌 점에 대해서 바인딩 레이아웃 MyViewModel타입 myViewModel변수 layout expression으로 viewModel의 testString값을 텍스트 속성으로 설정 MainActivity MyViewModel 이 상태에서 TextView가 다른 적절한 String으로 업데이트 되어야 할때 다음과 같이 하면 변경이 될까? myViewModel.testString="변경이 될까" onCreate, o..
-
[AAC] DataBinding 2 - generated binding classAndroid/ArchitectureComponent 2021. 9. 11. 14:10
2021.09.09 - [Android/DataBinding] - [Android] DataBinding 1- 데이터바인딩 기본 사용법 ViewDataBinding 데이터 바인딩 클래스들( 태그를 사용한 layout들의 각각에 해당하는 바인딩 클래스들) 의 Base class. DataBindingUtil 레이아웃으로부터 ViewDataBinding클래스 인스턴스를 생성하기 위한 유틸리티 클래스 클래스 메서드로 데이터 바인딩과 관련된 기능을 수행한다. (inflate, bind, setContentView) 우리가 사용하는 바인딩 클래스 ViewDataBinding의 자손으로 구현되며, 내부에 변수가 포함되어있다. activity_main.xml -> ActivityMainBinding extends V..