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

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第3章:IAM(Identity and Access Management):GCPの「誰が」「何に」「何ができるか」を管理する門番

  • 投稿者 mh
  • 6月 2, 2025
  • 1 views

現場で使えるChrome DevTools実践ガイド 第9章:Applicationパネルとストレージの確認

  • 投稿者 mh
  • 6月 2, 2025
  • 2 views

Kubernetes Learning 第29章:RBACの基礎とロール設計 〜「誰が、何を、どこで」できるのかを制御する〜

  • 投稿者 mh
  • 6月 2, 2025
  • 4 views

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

  • 投稿者 mh
  • 6月 2, 2025
  • 4 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第2章:リージョンとゾーン、グローバルリソース:GCPの「物理的な場所」の考え方

  • 投稿者 mh
  • 6月 1, 2025
  • 8 views

現場で使えるChrome DevTools実践ガイド 第8章:NetworkパネルでのHTTP通信確認

  • 投稿者 mh
  • 6月 1, 2025
  • 11 views