Android & Kiến trúc

Thực hành xây trạng thái danh sách Android

Phân biệt đang tải, danh sách trống, có dữ liệu và lỗi bằng tình huống cụ thể.

Thực hànhThực hành4 phút đọcPython

Thích và đánh giá Bình luận và hỏi đáp
Rỗng là kết quả tải thành công với 0 bản ghi, khác lỗi kết nối.
Rỗng là kết quả tải thành công với 0 bản ghi, khác lỗi kết nối. Mở hình lớn ↗

1. Đề bài

Màn hình học phần có bốn trạng thái gồm đang tải, rỗng, có dữ liệu và lỗi. Hãy mô tả sự kiện tải lại và quy tắc xử lý kết quả. Kết quả thành công với danh sách rỗng cần hiện thông báo riêng.

2. Đặt quy tắc ánh xạ

Sự kiện tải lại trả trạng thái đang tải. Sự kiện thành công nhìn vào số phần tử. Sự kiện thất bại lưu thông báo để người dùng biết có thể thử lại. Trong bài cơ bản này chỉ có một yêu cầu đang xử lý tại một thời điểm.

3. Đối chiếu lời giải

Mẫu Python mô phỏng hàm chuyển trạng thái rồi kiểm tra tải thành công rỗng, có dữ liệu, thất bại và thử lại. Khi đưa vào Android, ViewModel có thể giữ trạng thái, còn Activity hoặc Fragment chỉ hiển thị theo trạng thái được nhận.

Chạy ví dụ bằng python hoc_android_trang_thai_man_hinh.py.

Môi trường thực hành. Python 3.10 trở lên. Ví dụ dùng thư viện chuẩn Python. Đây là mô hình Python để kiểm tra logic trước khi chuyển sang dự án Android.

Python · hoc_android_trang_thai_man_hinh.pyTải mã nguồn
def trang_thai(su_kien, du_lieu=None):
    if su_kien == "tai":
        return ("đang tải", None)
    if su_kien == "thanh_cong":
        return ("có dữ liệu", du_lieu) if du_lieu else ("rỗng", [])
    if su_kien == "that_bai":
        return ("lỗi", du_lieu)
    raise ValueError("Sự kiện chưa biết")

assert trang_thai("tai") == ("đang tải", None)
assert trang_thai("thanh_cong", []) == ("rỗng", [])
assert trang_thai("thanh_cong", ["CTDL"]) == ("có dữ liệu", ["CTDL"])
assert trang_thai("that_bai", "Mất kết nối") == ("lỗi", "Mất kết nối")
print("Kiểm tra đủ bốn trạng thái hiển thị.")

4. Bài tập mở rộng

Thêm trạng thái đang làm mới trong khi vẫn hiển thị dữ liệu cũ. Giải thích vì sao cần lưu danh sách và trạng thái tải riêng. Tạo một ca mạng lỗi khi đã có danh sách cũ để kiểm tra cách giao diện phản hồi.

Đọc thêm Hướng dẫn kiến trúc ứng dụng Android.