Project/Android TodoList

[Android] TodoList 앱 만들기 #02 - 아키텍처 설계

Hya68 2025. 6. 23. 15:48

개요

"할 일 목록 추가/삭제/완료 + 데이터가 RoomDB에 영구 저장되는 구조"

사용할 기술

  • MVVM 아키텍처 패턴
  • RoomDB 사용
  • LiveData + ViewModel
  • RecyclerView

폴더 구조

com.example.todolist
│
├── data/                   ← 데이터 모델 + DB 관련
│   ├── Todo.java           ← @Entity 클래스
│   ├── TodoDao.java        ← DAO 인터페이스
│   └── TodoDatabase.java    ← RoomDatabase 구현
│
├── repository/             ← 데이터 중개자 (Repository)
│   └── TodoRepository.java
│
├── ui/                     ← UI 관련
│   ├── MainActivity.java
│   ├── MainViewModel.java
│   └── TodoAdapter.java
│
└── layout/                 ← 레이아웃 XML 파일
    ├── activity_main.xml
    └── item_todo.xml

각 파일 역할

파일명 역할
Todo.java 할 일 Entity, Room 테이블 역할
TodoDao.java DB 쿼리 인터페이스 (Insert, Delete, Select)
TodoDatabase.java Room DB 클래스 (싱글톤 패턴)
TodoRepository.java ViewModel에 데이터 제공, DB 작업 중계
MainViewModel.java UI 상태 및 데이터 LiveData로 관리
MainActivity.java UI 초기화 및 사용자 이벤트 처리
TodoAdapter.java RecyclerView Adapter, ViewHolder 포함
activity_main.xml 메인 화면 레이아웃 (RecyclerView 포함)
item_todo.xml 리스트 한 줄 아이템 레이아웃

동작 흐름

더보기

사용자 UI 이벤트 (MainActivity)
   ↓
ViewModel 호출 (MainViewModel)
   ↓
Repository로 데이터 요청 (TodoRepository)
   ↓
DAO 통해 DB 작업 (TodoDao)
   ↓
Room DB 반영 (TodoDatabase)
   ↓
LiveData를 통해 ViewModel에 데이터 반영
   ↓
MainActivity가 LiveData 옵저빙 → RecyclerView 갱신