본문 바로가기

분류 전체보기

(5)
databinding error impl 관련 간단한 실수인데 찾으려하니 자료가 보이지 않아 작성합니다.. (제 생각을 토대로 원인과 방법을 설명 했습니다. 혹시나 틀린 부분이 있다면 알려주세요) 스터디 겸 간단한 프로젝트 진행 중에 빌드를 하다보니 databinding 쪽에서 계속 에러가 발생 ㅠ ActivityBindingImpl error: cannot find symbol 등과 같은 에러가 계속 발생하여 clean Build도 해보고 cash문제 인건가 해서 Invalidate Caches도 해보고 여러 차례 시도 해보았습니다 제가 생각한 원인은 class MainListViewModel( ) : BaseViewModel() { fun goToCreate(view: View) { Navigation.findNavController(view)...
Paging Library 정리 컨텐츠를 특정 기준으로 범위를 나누고, 스크롤을 따라 범위 단위로 로드되도록 하는 것 페이징 라이브러리는 단순히 무한 스크롤링을 지원하기 위한 구현체가 아닙니다. 안드로이드에서는 로컬 SQLite에 저장된 대량의 데이터를 RecyclerView로 표현할 때, 두 가지 선택지 중 하나를 선택할 수 있습니다. 하나는 위에서 언급한 무한 스크롤링을 이용한 방법이고, 다른 하나는 CursorAdapter 방식의 지연 로딩 기법입니다. 페이스북과 같은 피드 형태의 앱에서는 무한 스크롤링이, 연락처와 같은 앱에서는 패스트 스크롤이 가능한 지연 로딩 기법이 적합할 수 있습니다. Unbounded List 무한 스크롤링으로 데이터를 점진적으로 불러오는 기법에 활용 가능 Countable List 리스트의 전체 사이즈가..
Room 정리 ORM(Object Relational Mapping) 라이브러리 ORM ORM이란 Object Relational Mapping 으로 데이터베이스와 객체 지향 프로그래밍 언어간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법으로 DB 테이블과 매핑되는 객체를 만들고 그 객체에서 DB를 관리하는 것입니다. 구성요소 Database 데이터베이스 보유자 데이터 베이스 홀더를 포함하고, 관계형 데이터 베이스에 접근할 수 있는 엑세스 포인트를 제공 조건 extends RoomDatabase 하는 abstract class class내부에 Dao를 정의 annotation에 entities(table구조와 mapping되는)를 포함 생성하는 코드가 비용이 많이 들기 때문에 singleton으로 구현 @Datab..
LiveData 정리 LifeCyle을 알고 있는 데이터 타입 LifeCycle에 따라 데이터가 변경되는 시점에 맞추어 데이터를 변경 해줌 Activity/Fragment가 start,resume 상태일때 작동 Observer의 Callback으로 데이터를 변경 가능 Rx나 Observer 패턴에 적용하여 사용하기 편리함 Databinding 을 활용하여 사용하면 더욱 편리함 LiveData 형태 MutableLiveData 변경할 수 있는 LiveData형 UI Thread 와 Background Thread에서 선택적으로 사용 가능 LiveData 변경할 수 없고 오로지 데이터의 변경값만을 소비 MediatorLiveData 여러 LiveData를 한번에 처리 할 수 있음 일반적인 사용형태 //ViewModel에서의 L..
kotlin(코틀린) apply,run,with,let,also 함수 함수들의 개념 확인용으로 작성 및 다른분의 블로그의 내용을 토대로 작성되었습니다. 5가지 함수의 정의 inline fun with(receiver: T, block: T.() -> R): R { return receiver.block() } inline fun T.also(block: (T) -> Unit): T { block(this) return this } inline fun T.apply(block: T.() -> Unit): T { block() return this } inline fun T.let(block: (T) -> R): R { return block(this) } inline fun T.run(block: T.() -> R): R { return block() } with run과 ..