목록전체 글 (21)
yourginieus

클릭을 수신하여 처리하는 작업은 두 개로 나뉨 클릭을 듣고 수신하여 클릭된 항목 확인 클릭에 액션으로 응답 그렇다면 앱에 click listener를 추가할만한 좋은 장소는? Fragment에서 받으면 클릭이벤트를 넣어도 클릭된 아이템이 뭔지 모름 RecyclerView에서 받으면 사용자가 어던 항목을 클릭했는지 정확하게 파악하기 어려움 The best place to get information from one clicked item is in the ViewHolder object, since it represents one list item. ViewHolder는 listen for clicks에는 좋지만 handle에는 별로 안 좋음. 클릭을 다루기 좋은 장소는? Adapter! 어댑터에서 cli..

리사이클러뷰에는 layoutManager가 있음 LinearLayout : 수평 및 수직 목록 GridLayout : 그리드 레이아웃 보다 복잡하게 사용하려면 커스텀으로 LayoutManager를 구현해야 함 Linear Layout 이전에 xml의 리사이클러뷰에 layoutManager에 LinearLayoutManager를 추가한 건 custom 없이 data를 수직 목록으로 표시한 것 app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" LinearLayout은 child view의 vertical, horizontal 배치를 모두 지원함 Grid Layout 데이터를 스크롤 가능한 grid 형태로 child view를 배치함 이..

안드로이드에서 가장 일반적인 UI 작업 : 데이터 목록/그리드 표시 이러한 기능을 위해 Recyclerview 존재 장점 대규모 리스트에 매우 효율적임 기본적으로 Recyclerview는 현재 화면에 표시되는 항목을 처리하거나 그리는 데만 작동함 목록에 1000개가 있어도 화면에 10개 요소만 표시된다면 Recyclerview는 화면에 10개의 아이템을 그릴 수 있을 정도로만 동작함 사용자가 스크롤하면 Recyclerview는 화면에 표시되는 새로운 아이템을 파악하고 그 아이템을 표시하기에 충분한 작업만 수행함 item이 화면에서 스크롤되어 나가면 그 아이템의 view는 재활용됨(recycled) 아이템이 새로운 콘텐츠로 채워진다는 것을 의미 -> 처리 시간을 절약하고 목록이 부드럽게 스크롤되게 함 아이..

Room 은 Android Jetpack의 일부인 database library 임 Room library는 SQLite database의 상단에 있는 추상화 레이어임 SQLite는 SQL을 사용하여 데이터베이스 작업을 수행함 SQLite를 직접 사용하는 대신. Room은 데이터베이스 설정, 구성 및 상호작용 작업을 단순화함 또한 일반 function call을 사용하여 앱이 데이터베이스와 상호작용하도록 함 Room은 data를 검색할 수 있는 query syntax도 가지고 있음 우리가 실습할 앱은 다음과 같은 구조를 가짐 Android에서 data는 data class로 표시됨 이 data는 function call을 사용하여 access하고 수정할 수 있음 하지만 database 환경에서는, dat..

1. Add a timer Android는 타이머를 구현할 때 사용할 수 있는 CountDownTimer라는 유틸리티 클래스를 제공함 우리는 단어 목록이 비었을 때 게임이 곧장 종료되는 대신 타이머가 종료될 때 게임이 종료되도록 할 것 GameViewModel에 timer를 위한 로직을 추가하여 구성 변경 중에 타이머가 파괴되지 않도록 함 fragment는 timer ticks를 통해 timer text view를 업데이트할 수 있는 코드를 포함하고 있음 GameViewModel에 다음 지시들을 수행할 것! timer constants를 보관하는 companion object 만들기 companion object { // Time when the game is over private const val D..

1. Add ViewModel data binding 이전까지는 앱의 view에 접근하기 위한 type-safe 방법으롤 data binding을 사용함 하지만 data binding의 진정한 가치는, 이름에서 알 수 있듯이, 앱의 view 개체에 데이터를 직접 바인딩할 수 있다는 것! 현재의 app architecture view는 XML 레이아웃에서 정의되며, 뷰들을 위한 data는 ViewModel objects에 저장됨 각 view와 관련된 ViewModel 사이에는 UI controller가 있어서 이들 사이의 중계자 역할을 함 Git it 버튼은 game_fragment.xml 레이아웃 파일의 Button에 정의됨 사용자가 Got it 버튼을 탭하면, GameFragment 프래그먼트의 클릭리..

Live Data LiveData는 lifecycle을 판단해서 관찰할 수 있는 data holder class 특징 LiveData는 관찰할 수 있음 : LiveData에 있는 data가 변경되었을 때 observer가 통지될 수 있음 data를 저장함 : LiveData는 모든 데이터와 함께 사용할 수 있는 wrapper 생명주기를 인식함 : observer를 LiveData에 접속시키는 경우, 옵저버는 LifecycleOwner(보통 activity나 fragment)와 연결됨 LiveData는 오직 STRTED나 RESUMED와 같은 active lifecycle 상태에 있는 옵저버만 업데이트 함 1. Add LiveData to the GameViewModel 여기서는 GameViewModel에..

App architecture : 애플리케이션 아키텍처 앱 아키텍쳐란, 앱의 class들과 그 사이의 관계를 설명하는 방법으로, 특정 시나리오에서 잘 수행되며 작업하기 쉬움 Android app architecture는 MVVM(model-view-viewmodel) architectural pattern과 유사함 실습에서 사용할 앱은 separation of concerns 디자인 원칙을 따르며, 클래스로 나뉘어짐과 동시에 각 클래스는 개별 관심사를 해결함 우리는 UI controller로 ViewModel과 ViewModelFactory를 이용할 것! UI controller UI controller는 Activity와 Fragment 같은 UI-based class를 말함 UI 컨트롤러는 UI 및 ..