Android67 [Android] Paging3에서 데이터 없을 때 처리하기 Paging3는 PagingData를 PagingDataAdapter의 submitData로 전달하여 리스트를 표시한다. 만약 리스트에 표시할 데이터가 없는 경우 초기 화면을 표시해야 하지만, 데이터가 없어도 PagingData는 null이나 empty로 내려오지 않는다. 이럴 때 PagingDataAdapter의 addLoadStateListener를 사용하면 데이터가 없을 때 처리를 할 수 있다. addLoadStateListener는 CombinedLoadState로 현재 PagingData의 로딩 상태를 관찰한다. CombinedLoadStates의 LoadState 정보는 다음과 같다.(참고) • append 목록의 끝에서 데이터를 로드하는 상태 • prepend 목록의 시작 부분에서 데이터를 .. Android/Paging3 2023. 2. 20. [Android] adb로 기기의 해상도를 확인하고 변경하기 안드로이드 개발을 하다 보면 해상도별로 앱이 어떻게 표시되는지 확인하고 싶을 때가 있다.이럴 때 adb를 사용하면 기기의 해상도를 쉽게 변경할 수 있다. adb shell wm우선 프롬프트에서 adb shell wm을 입력하면 Window Manager의 명령어 리스트들이 나온다.이 중에서 size와 densitiy 명령어를 사용하여 해상도를 확인하고 수정할 수 있다.size : 기기 크기인 화면상의 총 픽셀 수(해상도)density : 기기 밀도(dpi)adb shell wm sizeadb shell wm size를 입력하면 해상도 값을 얻을 수 있다.해상도를 변경하고 싶다면 adb shell wm size 뒤에 변경할 값을 입력하면 된다.ex) adb shell wm size 1080x2220 값을.. Android/ADB 2023. 2. 13. [Android] Glide, 모서리 둥글게 처리하기 .apply(RequestOptions.bitmapTransform(RoundedCorners(정수 값))) Glide를 사용해서 이미지를 표시할 때, 모서리를 둥글게 하려면 위의 코드를 추가하면 된다. Glide.with(this) .load(R.drawable.sample) .into(mBinding.ivMain) Glide.with(this) .load(R.drawable.sample) .apply(RequestOptions.bitmapTransform(RoundedCorners(80))) .into(mBinding.ivMain) Android/Glide 2023. 2. 6. [Android] error: To use Coroutine features, you must ··· error: To use Coroutine features, you must add `ktx` artifact from Room as a dependency. androidx.room:room-ktx: Room 라이브러리를 사용하고 있었고, Dao에서 suspend를 추가하였는데 해당 에러가 발생했다. Dao를 선언할 때 suspend 키워드를 붙이면 Room에서 suspend 함수로 구현을 해주는데 해당 기능을 해주는 라이브러리가 없어서 발생한 에러인 것 같다. implementation "androidx.room:room-ktx:2.4.3" gradle에 추가하면서 문제를 해결됐다. Android/이슈 처리 2023. 1. 26. [Android] ADB로 Task와 Stack 확인하기 adb shell "dumpsys activity activities" ( "" 없어도 됨 ) 터미널에서 위 명령어를 입력하면 연결된 기기에서 활성화된 앱에 대한 Activity 정보를 읽는다. 위 정보에 Task와 Stack이 포함되어 있어 해당 부분을 찾으면 된다. (Task와 Stack 이외의 정보들이 많기 때문에 오래 걸릴 수 있음) adb shell "dumpsys activity activities | grep -i Hist" 불필요한 정보는 필터링을 통해서 Stack에 대한 정보만 얻을 수 있다. adb shell dumpsys activity activities | grep -i $packageName | grep -i Hist 특정 앱에 대한 Stack 정보를 얻으려면 위 명령어를 사용하.. Android/ADB 2023. 1. 25. [Android] Paging3에서 아이템 삭제하기 + 로딩 처리 [Android] Paging3, 스크롤 시 로딩 화면 추가하기 [Android] Paging3 + Room + Flow 사용하기 [Android] RecyclerView에서 페이징+삭제 처리하기 #2 (with Room) [Android] RecyclerView에서 페이징 처리하기 #1 RecyclerView에서 리스트를 스크롤하다가 어느 순간에 로딩 화면 ogyong.tistory.com 저번에 했던 스크롤 시 로딩 화면을 추가하는 것에 이어서 Paging3에서 아이템을 삭제하고, 삭제가 처리되는 동안 로딩 화면을 띄우는 것을 해보려고 한다. Room 삭제 쿼리 추가 @Dao interface SampleDao { ... /** * 아이템 삭제 */ @Query("DELETE FROM sample W.. Android/Paging3 2023. 1. 19. [Android] Paging3, 스크롤 시 로딩 화면 추가하기 [Android] Paging3 + Room + Flow 사용하기 [Android] RecyclerView에서 페이징+삭제 처리하기 #2 (with Room) [Android] RecyclerView에서 페이징 처리하기 #1 RecyclerView에서 리스트를 스크롤하다가 어느 순간에 로딩 화면이 뜨면서 리스트가 늘어나는 것을 ogyong.tistory.com 저번에 Paging3를 이용해서 리스트를 그려봤다. 여기에 추가로 스크롤을 해서 다음 페이지를 호출할 때 로딩 화면을 그려보려고 한다. Paging3 라이브러리는 LoadState 클래스를 통해 데이터의 로드 상태를 추적할 수 있다. 그리고 로드 상태가 변경되면 LoadState 값을 자동으로 알림 받는 LoadStateAdapter가 존재한다. .. Android/Paging3 2023. 1. 18. [Android] Paging3 + Room + Flow 사용하기 [Android] RecyclerView에서 페이징+삭제 처리하기 #2 (with Room) [Android] RecyclerView에서 페이징 처리하기 #1 RecyclerView에서 리스트를 스크롤하다가 어느 순간에 로딩 화면이 뜨면서 리스트가 늘어나는 것을 본 적 있을 것이다. Adapter에서 등록된 list가 마지막에 ogyong.tistory.com 이전에 기기에 저장된 데이터를 RecyclerView와 Room을 사용해서 페이징 작업을 한 적이 있었다. 이번에는 Paging3 라이브러리를 사용해서 기기에 저장된 데이터를 표시해보려고 한다. (삭제 기능은 다음에..) 참고로 Paging3는 Android Paging Basics codelab과 Android Paging Advanced cod.. Android/Paging3 2023. 1. 16. [Android] Duplicate class androidx.lifecycle ··· // Room 의존성 추가 implementation "androidx.room:room-runtime:2.4.3" kapt "androidx.room:room-compiler:2.4.3" // paging implementation "androidx.paging:paging-runtime-ktx:3.1.1" Room과 Paging3을 사용하기 위해 gradle 파일에 의존성을 추가하고 실행을 했는데, Duplicate class androidx.lifecycle.ViewModelLazy found in modules lifecycle-viewmodel-2.5.1- runtime (androidx.lifecycle:lifecycle-viewmodel:2.5.1) and lifecycle-viewmodel.. Android/이슈 처리 2023. 1. 9. [Android] Android Studio에서 쿼리 실행하기 Android Studio 하단 탭에 있는 App Inspection 또는 상단 탭의 View > Tool Windows > App Inspection을 클릭해서 Database Inspector을 띄운다. Database Inspectore에서 빨간색 박스로 표시해둔 아이콘을 선택하면 New Query 탭이 열리는데 여기에 쿼리를 작성할 수 있다. 주황색 박스로 데이터베이스를 선택하고 쿼리를 작성했다면 Run 버튼을 눌러서 쿼리를 실행하면 된다. 왼쪽의 테이블을 더블클릭하면 해당 테이블의 데이터를 보여준다. 새로고침 버튼을 클릭해서 업데이트된 내용을 확인하면 된다. Android/Room 2023. 1. 9. [Android] RecyclerView에서 페이징+삭제 처리하기 (with Room) #2 [Android] RecyclerView에서 페이징 처리하기 #1 RecyclerView에서 리스트를 스크롤하다가 어느 순간에 로딩 화면이 뜨면서 리스트가 늘어나는 것을 본 적 있을 것이다. Adapter에서 등록된 list가 마지막에 도달했을 때를 감지하여 로딩 화면을 띄우 ogyong.tistory.com 저번에 RecyclerView에서 문자열 배열이 저장된 파일을 이용해 페이징 처리를 해봤는데, 이번에는 실제로 Room에 저장된 데이터의 페이징과 삭제 처리를 해보려고 한다. RecyclerView 페이징 예제 예제에서 Room, ViewModel, LiveData, Coroutine, ViewBinding을 사용한다. 1부터 30까지의 값을 Room을 이용해서 기기에 저장한다. (데이터 저장은 별.. Android/RecyclerView 2023. 1. 9. [Android] Could not find method kapt() for arguments ··· Caused by: org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method kapt() for arguments [androidx.room:room-compiler:2.4.3] on object of type org․gradle․api․internal․artifacts․dsl.dependencies.DefaultDependencyHandler. build.gradle에서 kapt 관련 의존성을 추가하고 sync를 했을 때 에러가 발생했다. 원인은 kotlin-kapt을 plugins에 추가하지 않아서였다. plugins { id 'com.android.appli.. Android/이슈 처리 2023. 1. 6. 이전 1 2 3 4 5 6 다음