Ví dụ triển khai mô hình MVP trong android

5342

Bài viết về MVP chắc các bạn cũng đã xem rất nhiều trên mạng rồi, tuy nhiên trước khi bắt đầu bài viết mình điểm lại một số nội dung chính về MVP như sau:

Mô hình MVP chia project thành 3 lớp M.V.P:

  • M – Model: lớp này dùng để xử lý dữ liệu(tao dữ liệu, lấy dữ liêu…), chịu trách nhiệm lấy dữ liệu từ database hoặc network. Dữ liệu được đưa vào model rồi đẩy sang Presenter thông qua các hàm callback.
  • V- View: lớp này dùng để đưa dữ liệu vào view, nhận dữ liệu từ lớp presenter
  • P – Presenter: lớp này sẽ là lớp xử lý các bussiness logic, P là lớp trung gian có thể giao tiếp được với hai lớp Model View ( M – V ko  giao tiếp trực tiếp với nhau).
    Khi lớp View nhận một event từ người dùng sự kiện sẽ gửi xuống lớp Presenter, lớp Presenter lấy sẽ liệu từ lớp Model đẩy lên lớp View.

Ví dụ: Xây dựng mô hình MVP hiển thị 1 dữ liệu từ lớp Model bất kỳ ra ListView.

B1: Tạo 3 package lần lượt là model, view, presenter.

  • Đầu tiên định nghĩa lớp MainView hiển thị dữ liệu, lớp này được implement tại MainActivity.

  • Tạo 1 entity đơn giản tên Demo:

  • Tạo một interface: LoadDemoListener.java làm callback cho lớp Model

  • Tiếp theo tạo một UserInterator.java lớp này là lớp xử lý, dữ liệu đẩy vào callback để đưa qua lớp presenter

  • Tiếp theo tạo lớp MainPresenter.java lớp này dùng để xử lý các logic, nhận dữ liệu từ lớp model thông qua các hàm callback, nhiệm vụ đẩy lên View hướng dẫn cách View hiển thị:

  • Cuối cùng tại MainActivity.java khởi tạo presenter, tạo sự kiện load dữ liệu, cấu hình hiển thị cho listview.

  • Layout cho main activity như sau:

Source code Github.

Tìm hiểu thêm tại đây: Android Architecture!