hyeon.s
개발로그
hyeon.s
전체 방문자
오늘
어제
  • 분류 전체보기 (150)
    • Web 및 인프라 (1)
      • Web (1)
      • Terraform (2)
      • Docker (1)
    • Android (1)
      • 공부 (28)
      • 트러블슈팅 (12)
      • 프로젝트 개발 (10)
      • Compose (2)
      • 우테코 프리코스 (0)
    • Server (5)
      • 공부 (1)
      • Spring (4)
    • 알고리즘 (68)
      • 문제풀이 (C++,Kotlin) (54)
      • 공부 (13)
    • 디자인 (3)
      • UI (3)
    • Language (5)
      • Kotlin (5)
      • JAVA (0)
    • IT 동아리 (8)
      • UMC 3기 (Android) (7)
      • Sopt 32기 (Android) (1)

Github

글쓰기 / 관리자
hELLO · Designed By 정상우.
hyeon.s
IT 동아리/UMC 3기 (Android)

[UMC/Android] 8주차 - RoomDB 활용하기

[UMC/Android] 8주차 - RoomDB 활용하기
IT 동아리/UMC 3기 (Android)

[UMC/Android] 8주차 - RoomDB 활용하기

2022. 11. 23. 23:41
728x90

8주차 - RoomDB 활용하기

🍀구현영상 및 설명

  • 이전 주차에 bundle을 활용해서 Activity와 Fragment간 데이터를 전달했던 것을 모두 RoomDB로 바꾸어서 만들었다.
  • RoomDB를 활용해 메모 수정, 삭제, 추가 기능을 구현하였다.
    • 메모 리스트 RV에서 item 클릭시 해당 리스트의 메모 id를 받아오고 이를 매개변수로 활용해 각 메모를 수정 및 삭제 했다.
    • FrameLayout을 활용해 즐겨찾기 toggle를 구현하고, 보관함에 즐겨찾기 메모가 담기도록 하였다.
    • 사용한 각 Query는 다음과 같다.
@Dao
interface MemoDao {
    //메모 추가
    @Insert
    fun insert(memo:MemoData)

    @Delete
    fun delete(memo:MemoData)

    //메모 삭제 (memoId 이용)
    @Query ("DELETE FROM MemoData WHERE memoId=:memoId")
    fun deleteMemo(memoId:Int)

    // 메모 전체 불러오기
    @Query("SELECT * FROM MemoData")
    fun selectAllMemo() : MutableList<MemoData>

    // 특정 메모 불러오기 (memoId 이용)
    @Query("SELECT * FROM MemoData WHERE memoId=:memoId")
    fun selectOneMemo(memoId:Int) : MemoData

    //메모 내용 수정 및 즐겨찾기 변경 
    @Query("UPDATE MemoData SET title = :title, content = :content, day = :day, color = :color, favorite = :favorite WHERE memoId=:memoId")
    fun updateMemo(memoId:Int,title:String?,content:String?,day:String?,color:String?,favorite:Boolean)

    //좋아요 메모들만 가져오기
    @Query("SELECT * FROM MemoData WHERE favorite=:favorite")
    fun selectFavorite(favorite: Boolean) : MutableList<MemoData>
}

🍀코드

UMC_Android/week8 at master · ss99x2002/UMC_Android

🍀트러블슈팅

dataList 업데이트 문제

  • 문제 : RoomDB에서 Select, Delete, Update 등을 해서 가져온 List가 RecyclerView에 바로 적용되지 않는 문제가 발생했다.
  • 원인: RoomDB에서 리스트를 리턴 받을 때 List<> 자료형으로 받아서 List가 변경되었을때 처리를 못했던 것이다.
  • 해결: 리턴 값을 MutableList<>로 받아 set, removeAt 메서드 등을 이용해 List를 변경하고 notify하니 정상적으로 바로 적용되었다.

새로운 메모 추가 시 memo Id 리턴 문제

  • 현재 코드에서 메모 수정,삭제 등의 처리를 할때 memoId를 다른 activity로 전달하고, memoId를 통해 roomDB로 해당 메모의 데이터를 가져오는 Query를 작성했다.
  • 문제: 이미 생성된 메모의 경우 memoId를 받아와 처리 할 수 있지만, 새롭게 메모를 생성 할 경 수정 및 삭제가 어려운 문제가 발생했다.
  • 원인: insert 후 memoId를 리턴 할 방법이 없어서 해당 문제가 발생했다.
  • 해결: memoId만을 리턴하는 쿼리를 작성하려 했으나 제목, 내용 등 모든 값을 조건으로 다 입력해야 했기 때문에 다른 방법을 생각했다.
    • memoList에 마지막 메모의 id + 1 로 새로운 메모의 id를 부여해주었다.
      • 어차피 memoId는 자동으로 증가하기만 하기 때문에, list의 끝에 있는 값보다 더 큰 memoId는 리스트에 존재할 수 없기 때문이다.

 

728x90
저작자표시 (새창열림)

'IT 동아리 > UMC 3기 (Android)' 카테고리의 다른 글

[UMC/Android] 9주차 - Open API 활용  (0) 2022.12.02
[UMC/Android] 7주차 - Thread 이용한 타이머 만들기  (0) 2022.11.16
[UMC/Android] 6주차 - Bottom navigation, TabLayout, ViewPager2  (0) 2022.11.13
[UMC/Android] 5주차 - 메모 어플 만들기  (0) 2022.11.03
[UMC/Android] 3주차 - Activity/Fragment간 데이터 전달  (0) 2022.10.12
'IT 동아리/UMC 3기 (Android)' 카테고리의 다른 글
  • [UMC/Android] 9주차 - Open API 활용
  • [UMC/Android] 7주차 - Thread 이용한 타이머 만들기
  • [UMC/Android] 6주차 - Bottom navigation, TabLayout, ViewPager2
  • [UMC/Android] 5주차 - 메모 어플 만들기
hyeon.s
hyeon.s
이유있는 코드를 짜자

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.