2017-09-21 46 views
5

Tôi có một Activity có chứa 3 RecyclerViews. Tôi cần điền số RecyclerViews với dữ liệu từ kho lưu trữ từ xa (3 yêu cầu khác nhau). Tôi có thể sử dụng nhiều số ViewModels trong số Activity hoặc có giải pháp nào tốt hơn hay không (thực hành tốt nhất).Hoạt động với nhiều Chế độ xem

+0

Mẫu Google AAC cho thấy việc sử dụng 1 RecyclerViews với 1 LiveData. Vấn đề là gì nếu bạn cố gắng làm 3 RecyclerViews với 3 LiveDatas –

Trả lời

5

Trong trường hợp này, tôi khuyên bạn nên sử dụng một mô hình chế độ xem có ba đối tượng LiveData khác nhau. Bằng cách này, giao diện người dùng có thể được cập nhật bất cứ khi nào một trong ba yêu cầu của bạn nhận được phản hồi. Để biết chi tiết về cách sử dụng RecyclerView với LiveData, hãy xem Google Example.

Tôi nghĩ rằng có nhiều chế độ xem cho mỗi hoạt động chỉ làm tăng độ phức tạp và tôi không thấy bất kỳ giá trị nào khi thực hiện điều đó.

+1

Liên kết mẫu của Google đã chết. –

+0

cảm ơn, tôi đã cập nhật nó – guglhupf

+0

@guglhupf Có một giá trị khi làm điều đó: giảm ghép nối giữa 'RecyclerViews' và tăng khả năng sử dụng lại chúng một cách độc lập hoặc chuyển sang màn hình khác. –

0

Theo the open/closed principle, bạn nên tạo ba khác nhau ViewModel s. Độ phức tạp không tăng lên nhiều, và bạn đang có khả năng di chuyển một ViewModel (hoặc chỉ sử dụng lại nó) với RecyclerView tương ứng với một Activity khác rất dễ dàng.

Tất nhiên, đôi khi vi phạm quy tắc có ý nghĩa - ví dụ nếu bạn biết, không có cơ hội, RecyclerView sẽ được sử dụng lại hoặc di chuyển sang màn hình khác, sau đó bạn có thể thực hiện giải pháp đơn giản hơn với ViewModel.

Tình huống tương tự nếu ViewModel (ngay cả với 3 danh sách) có khả năng luôn luôn đơn giản (chỉ ba trường LiveData, chỉ một vài dòng mã để điền chúng), bạn có thể phá quy tắc này.

Tuy nhiên, vi phạm O/CP không phải là một thực hành tốt - đó chỉ là vi phạm quy tắc có ý thức.

Các vấn đề liên quan