본문 바로가기

분류 전체보기

(18)
[Android] Navigation https://www.youtube.com/watch?v=QywdsH7YTdI&list=PLxTmPHxRH3VXHOBnaGQcbSGslbAjr8obc&index=12 출처: 오준석의 생존코딩 - 모던안드로이드 *Navigation: 프래그먼트 간 이동경로를 지정 1. bulid gradle 수정 2. 첫 시작 프래그먼트를 navHostFragment로 지정하기, navGraph속성도 지정해주기. 3. navigation파일을 만들어서 프래그먼트 간 연결을 만들기. 4. navcontroller.navigate(R.id~~) 로 다음 지정해놓은 화면으로 넘어가도록 하기. 5. 액션바와의 연동을 위해서는 메인 액티비티에서 NavController, appbarConfigifuration을 만들어서 Navig..
[Android] DataBinding https://www.youtube.com/watch?v=wP6aRtOLS0k&list=PLxTmPHxRH3VXHOBnaGQcbSGslbAjr8obc&index=9 출처: 오준석의 생존코딩 - 모던 안드로이드 *DataBinding - xml에 data를 넘겨줄 수 있음 1. 모듈 build gradle의 android 항목에 dataBinding {enabled = true} 추가 2. xml코드 전체를 추가하고 네임스페이스를 layout에 옮겨줌 3. 기존의 setContentView를 DatabindingUtil.setContentView()로 수정하고 binding변수를 만들어 할당해줌. 4. binding개체는 xml정보를 모두 갖고 있으므로 findViewbyId가 필요하지 않다. bindin..
[Android] UI와 로직 분리 ViewModel https://www.youtube.com/watch?v=2mqt0j-a5xI&list=PLxTmPHxRH3VXHOBnaGQcbSGslbAjr8obc&index=8 출처: 오준석의 생존코딩 - 모던 안드로이드 * UI와 로직을 분리하는 방법 -viewModel은 jetpack에 들어있는 라이브러리 -회전변경시 화면이 초기화 되는 문제를 해결할 수 있음. 1. ViewModel을 만듦 2. 액티비티에 있던 로직들을 ViewModel에 옮김 - 뷰모델에 db 변수를 옮긴다. - 뷰모델에 getAll()함수를 만들어 db.todoDao.getAll()를 return한다. - 뷰모델에 insert()함수도 만들어 insert하는 부분도 옮긴다. 3. 액티비티에 뷰모델을 선언한다. 4. 코루틴을 사용해 비동기처리..
[Android] Room 비동기 처리 https://www.youtube.com/watch?v=LRMfm458E3k&list=PLxTmPHxRH3VXHOBnaGQcbSGslbAjr8obc&index=5 출처: 오준석의 생존코딩 - 모던안드로이드 DB access는 Background에서 해야함 !! * DB작업을 백그라운드에서 처리하도록 수정하기 - AsyncTask를 사용 1. AsyncTask를 extends한 InsertAsyncTask 클래스 생성. 2. 멤버에 TodoDao선언 3. 오버라이딩 함수 doInbackground(..) 메소드에서 TodoDao.insert(todos[0])등 db작업하기. 4. 버튼 온클릭리스너에 InsertAsyncTask(db.todoDao()).excute(new Todo(~~~)) 해서 처리 *..
[Android] Room - LiveData 연동 https://www.youtube.com/watch?v=jit8j4gblIk&list=PLxTmPHxRH3VXHOBnaGQcbSGslbAjr8obc&index=3 출처: 오준석의 생존코딩 - 모던 안드로이드 *Room과 LiveData를 함께 사용하면 DB내용을 관찰하다 변경사항이 생기면 자동으로 갱신되도록 할 수 있음 1. 기존 List를 LiveData으로 바꿈. 2. 액티비티에서 db.todoDao().getAll().observe(this, todos -> { textiew.setText(todos.toString() }) 으로 수정함. (변경된 내용이 todos에 들어옴) 3. insert하면 자동으로 setText됨.
[Android] DB를 이용한 데이터 저장 방법 room https://www.youtube.com/watch?v=97xmJRZRGm4&list=PLxTmPHxRH3VXHOBnaGQcbSGslbAjr8obc&index=2 출처: 오준석의 생존코딩 - 모던 안드로이드 *Room - sqlite를 대체할 수 있는 database * 할 일을 저장하는 어플 예제 (언어: java) - DB사용을 위해서 1. Todo 객체를 만든다 2. Room library 추가 3. id를 primary key로 지정하기 위해서 @primaryKey(autoGenerate = true) 어노테이션 추가 4. 이것을 room에서 사용하기 위한 개체로 만들기 위해서 @Entitiy 어노테이션 추가 => 모델 준비 끝 5. Data access object인 Dao객체를 만들기 위해서..
[Android] Architecture Component - ViewModel + LiveData + DataBinding https://www.youtube.com/watch?v=Y-uPcwBEEV4&t=2s 출처: 오준석의 생존코딩 *아키텍쳐 컴포넌트? -> 라이프사이클 관리를 쉽게 하는 것 *라이브데이터 사용 시 -> 데이터 변경시 알림을 받아 ui를 자동으로 변경 가능(데이터 바인딩-옵저버블 필드보다 쉬움 ) *뷰모델 -> ui와 관계가 있는 데이터를 저장하는 용도. *룸 -> sqlite를 대체하는 라이브러리 *기존 databinding 만 사용한다면? -> 라이프사이클 때문에 화면 회전시 값이 날아감. *뷰모델의 라이프사이클 -> 액티비티 소멸시 소멸, 화면 회전해도 값이 날라가지 않음 *라이브데이터와 뷰모델을 엮어서 쓰면?-> 관찰 가능한데이터로 만들 수 있다. - 수정이 가능하다면 MutableLiveData,..
[Android] 데이터 바인딩을 사용한 문자열 형식 지정 In string.xml, add the following strings, which you will use to format the word and score text views. The %s and %d are the placeholders for the current word and current score. \"%s\" Current Score: %d 2. In game_fragment.xml, update the text attribute of the word_text text view to use the quote_format string resource. Pass in gameViewModel.word. This passes the current word as an argument to th..