전체 글 (85) 썸네일형 리스트형 API 사용하여 동영상 가져오기 1) Retrofit 설정Retrofit은 Android를 위한 타입 safety HTTP 클라이언트 라이브러리이다.build.gradle (Module: app)dependencies { implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'com.squareup.okhttp3:logging-interceptor:4.9.0'}2) API 인터페이스 정의Retrofit 인터페이스를 정의하여 API 엔드포인트와 상호작용한다.interface ApiService { @GET("search") suspe.. [심화 프로젝트] 회고 1) 튜터님 피드백- 즉각적인 프로젝트 내용 피드백 수용 자세가 좋았음- 최종 프로젝트에는 ListAdapter와 Flow를 사용해보기- 피그마 무료 레퍼런스 참고하여 UI를 구성하면 좋을 것2) Keep- 안드로이드에서 기본적으로 제공하는 디자인이 아닌 폰트나 색상 비율 등을 직접 적용하여 기존 프로젝트보다 UI 디자인이 더 발전할 수 있었음- 분업이 매우 잘 이루어지고 이슈 발생시 공유가 잘되어 쉽게 해결했음- 처음 사용해보는 기술도 시도하는 도전 정신3) Problem* 문제- 세심한 예외처리가 조금 부족했었던 것 같음 (ex. 가로 모드, 빌드 버전 등)- Room 사용 관련하여 앱 종료 후 재실행하는 것을 시연 영상에 넣었으면 하는 아쉬움* 원인- 기능 구현에만 집중을 하여 세심한 부분에 대한 .. Hilt & ViewModel Hilt를 사용하면 ViewModelProvider를 명시적으로 호출할 필요가 없는 이유는 Hilt가 ViewModel의 생명주기와 종속성 관리를 자동으로 처리해주기 때문이다. 이를 통해 더 간결하고 유지보수하기 쉬운 코드를 작성할 수 있다. Hilt를 사용하면 ViewModel을 주입받기 위해 다음 단계를 따른다.1) Hilt 모듈 생성:@HiltViewModel 주석을 사용하면 Hilt가 ViewModel을 자동으로 관리해준다.2) ViewModel 클래스에 @HiltViewModel 주석 추가:ViewModel 클래스에 @HiltViewModel 주석을 추가하여 Hilt가 해당 ViewModel을 주입할 수 있도록 해준다.3) by viewModels() 사용:Fragment 또는 Activity에.. 검색 버튼 클릭시 키보드 숨김 처리 1) EditText의 setOnEditorActionListener를 사용하여 검색 버튼을 감지2) 키보드를 숨기는 로직 private fun setUpListener() { binding.etSearch.setOnEditorActionListener { _, actionId, _ -> hideKeyboard() }}private fun hideKeyboard() { val imm = view?.context?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.hideSoftInputFromWindow(requireView().windowToken, 0)} Entity, Mapper Entity는 데이터베이스 테이블의 구조와 매핑되는 클래스이다. 객체 관계 매핑(Object-Relational Mapping) 프레임워크에서 주로 사용된다. 데이터베이스 매핑: Entity 클래스는 데이터베이스 테이블의 각 열을 클래스의 필드로 나타낸다. 이를 통해 데이터베이스의 행(row)을 객체 형태로 표현할 수 있다.데이터의 영속성: Entity 클래스는 데이터베이스와 애플리케이션 사이의 데이터 전송을 담당한다. 이를 통해 데이터베이스에 저장된 데이터를 애플리케이션의 객체로 불러오거나 객체를 데이터베이스에 저장할 수 있다. 데이터 검증 및 제약 조건: Entity 클래스에서 데이터 검증과 제약 조건을 설정할 수 있다. 예를 들어 특정 필드는 null일 수 없거나 고유해야 한다는 제약을 설정할 수 .. DAO annotation @Dao : 해당 인터페이스를 DAO로 표시한다. 이 어노테이션이 붙은 인터페이스는 컴파일 타임에 Room이 구현 클래스를 생성한다. @Query : 데이터베이스 쿼리를 정의한다. SELECT, INSERT, UPDATE, DELETE와 같은 SQL 쿼리를 직접 작성할 수 있다. @Insert : 데이터를 삽입하는 메소드를 정의한다. 하나 이상의 엔티티 객체를 데이터베이스에 삽입할 수 있다. @Update : 기존 데이터를 업데이트하는 메소드를 정의한다. 하나 이상의 엔티티 객체를 업데이트할 수 있다. @Delete : 데이터를 삭제하는 메소드를 정의한다. 하나 이상의 엔티티 객체를 삭제할 수 있다. @Insert(onConflict = OnConflictStrategy.REPLACE) : 데이터베이스에.. Room 사용 이유 Room은 SQLite에 비하여 코드의 가독성, 유지보수성, 데이터베이스 작업 안전성을 크게 향상시킨다. SQLite보다 Room을 사용하는 이유는 다음과 같다. 1. 코드의 간결성과 가독성Room: Room은 SQLite의 복잡한 SQL 쿼리를 캡슐화하고, 데이터베이스 작업을 간결하고 가독성 있게 작성할 수 있는 API를 제공한다.SQLite: 직접 SQL 쿼리를 작성해야 하므로 코드가 복잡하고 가독성이 떨어진다.2. 컴파일 타임 검증Room: SQL 쿼리와 데이터베이스 스키마에 대한 컴파일 타임 검증을 제공하여 런타임 오류를 줄이고 개발 중에 버그를 쉽게 발견할 수 있다.SQLite: SQL 쿼리가 문자열로 작성되므로 컴파일 타임에 검증되지 않는다. 따라서 런타임 오류가 발생할 가능성이 높다.3. S.. Room Room은 Android의 데이터베이스 라이브러리로서 SQLite를 보다 쉽게 사용할 수 있게 해준다. 데이터베이스의 접근을 추상화하고 SQLite 데이터베이스와의 상호작용을 더 간단하고 안전하게 할 수 있다. SQL 쿼리의 컴파일 타임 검사를 제공하여 런타임 에러를 줄이고, 보일러플레이트 코드를 제거하여 코드의 가독성과 유지보수성을 향상시킨다. Room의 3가지 주요 요소는 다음과 같다. 1. Entity: 데이터베이스 테이블을 나타내는 데이터 클래스이다. 각 Entity는 데이터베이스 테이블의 행을 표현하며, 클래스의 각 필드는 테이블의 열에 매핑된다. @Entity 어노테이션을 사용하여 정의된다. 2. DAO(Data Access Object): 데이터베이스에 접근하기 위한 메서드를 정의한 인터페이.. 이전 1 2 3 4 5 ··· 11 다음