Android application development 第32章:実践ミニアプリ:シンプルなToDoリスト

🎯 目的

この章では、「シンプルなToDoリストアプリ」を通して、以下の知識を実践的に統合して身につけます:

機能/役割使用するコンポーネント
画面表示・UIActivity, XML, RecyclerView
状態管理ViewModel, LiveData
データ保存Room (SQLiteのラッパー)
UI更新RecyclerView.AdapterLiveData

🗂 アプリの構成イメージ

  • MainActivity:ToDo一覧を表示(RecyclerView)+追加ボタンあり
  • ViewModel:RoomとRecyclerViewの橋渡し。状態を保持。
  • Room:データベースにToDoを保存。
  • RecyclerView:ToDoアイテムをリストで表示。

🧩 各コンポーネントの役割

Activity:UIの土台

画面の制御をするクラスです。ボタンやリストビューを表示し、ユーザーの操作に応じてViewModelを呼び出します。

MainViewModel viewModel = new ViewModelProvider(this).get(MainViewModel.class);
viewModel.getTodoList().observe(this, todos -> {
    adapter.submitList(todos);
});

ViewModel:UIに依存しないロジック保持

  • Roomのデータを LiveData で保持
  • UI(Activity)は LiveData を observe(監視)して、変更時に自動で更新される
public class MainViewModel extends AndroidViewModel {
    private final TodoRepository repo;
    private final LiveData<List<Todo>> todoList;

    public MainViewModel(@NonNull Application app) {
        super(app);
        repo = new TodoRepository(app);
        todoList = repo.getAllTodos();
    }

    public LiveData<List<Todo>> getTodoList() {
        return todoList;
    }

    public void addTodo(String title) {
        repo.insert(new Todo(title));
    }
}

RecyclerView:リスト表示のUI部品

ToDoリストを表示するための部品で、各アイテムを効率的に再利用して描画します。Adapterクラスを使って、データとUIを橋渡しします。

public class TodoAdapter extends ListAdapter<Todo, TodoAdapter.TodoViewHolder> {
    // ViewHolderなどを定義
}

Room:データ保存のためのDBラッパー

SQLiteの代わりに、アノテーションベースでDB操作を簡単に行える仕組みです。

@Entity
public class Todo {
    @PrimaryKey(autoGenerate = true)
    public int id;

    @NonNull
    public String title;

    public Todo(@NonNull String title) {
        this.title = title;
    }
}
@Dao
public interface TodoDao {
    @Query("SELECT * FROM Todo ORDER BY id DESC")
    LiveData<List<Todo>> getAll();

    @Insert
    void insert(Todo todo);
}

🔄 連携の流れ(全体)


🧪 実装のポイント

  • データの流れは一方向:Activity → ViewModel → Repository → Room
  • 状態管理はViewModelが中心:画面回転でもデータが消えない
  • RoomとLiveDataでDB更新がUIに反映される

🛠 練習課題(発展)

  • ToDoのチェック機能(完了フラグ)
  • アイテムの削除機能(スワイプ対応)
  • 日時や優先度の追加
  • DataBinding の導入による UI ロジック簡略化

💡 まとめ

このToDoリストアプリを通じて、以下の「Android開発における定番構成」を実践的に理解することができます:

  • ViewModelとLiveDataによる状態管理
  • RecyclerViewによるリスト表示
  • Roomによる永続化
  • Activityとの連携

mh

Related Posts

Android application development 第33章:実践ミニアプリ:天気情報アプリ

Android application development 第31章:Firebase Analytics や Remote Config の活用

You Missed

Kubernetes Learning 第40章:Kubernetesのアップグレードとバージョン管理 ~安全にバージョンを上げるための基本知識~

  • 投稿者 mh
  • 6月 24, 2025
  • 100 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第13章:ストレージとデータベースの基礎 : オブジェクトストレージ: Cloud Storage(バケット、オブジェクト、ストレージクラス)- あなたの「データ置き場」

  • 投稿者 mh
  • 6月 23, 2025
  • 113 views

Kubernetes Learning 第39章:CRD(Custom Resource Definition)とは?~Kubernetesに“自分専用のリソース”を追加する仕組み~

  • 投稿者 mh
  • 6月 21, 2025
  • 112 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第12章:Cloud CDN(Content Delivery Network):あなたのWebサイトを「世界中のユーザーに超高速で届ける宅配便ネットワーク」

  • 投稿者 mh
  • 6月 20, 2025
  • 131 views

Kubernetes Learning 第38章:Operatorとは? ~Kubernetesに「運用の自動化ロボット」を組み込む仕組み~

  • 投稿者 mh
  • 6月 19, 2025
  • 122 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第11章:Cloud Load Balancing:あなたのGCPリソースを「賢く振り分ける交通整理の達人」

  • 投稿者 mh
  • 6月 18, 2025
  • 132 views