2013-07-16 38 views
7

Tôi đang tạo một ứng dụng hiển thị dữ liệu trong một ListView. Dữ liệu được phân loại thành hai loại (Phổ biến, Ưa thích). Tôi có một Activity và hai Fragments. Fragments hiển thị danh sách các mục dựa trên danh mục của chúng. Tôi đã sử dụng một ListView cho việc này. Sau đó, tôi có hai fragment_layouts giống hệt nhau trong thiết kế nhưng có các IDId1, idId2 của khung nhìn khác nhau cho TextViews. Các mã trong Phân đoạn chỉ khác nhau khi tham chiếu bố cục và chế độ xem tương ứng của chúng trong bố cục. Tôi nhận dữ liệu từ một URL có định dạng JSON. Nhưng mỗi loại có một tập hợp URL khác nhau tạo ra cùng một cấu trúc chỉ là dữ liệu khác nhau. Sau đó tôi phân tích cú pháp URL tương ứng trên từng Phân đoạn và điền vào ListView tương ứng. Tất cả mọi thứ hoạt động cho đến nay.Android - Tạo nhanh một Fragment nhiều lần?

Điều tôi muốn biết, có cách nào để tôi chỉ có thể sử dụng một Phân đoạn và sử dụng nó hai lần với bộ dữ liệu khác nhau trong mỗi phần không? Bằng cách này, tôi không phải tạo một Fragment khác nếu một category mới xuất hiện.

Đánh giá cao sự trợ giúp.

Trả lời

10

Tất nhiên bạn có thể làm. Trong thực tế, bạn nên làm như thế này.

Khi bạn tạo Phân đoạn không sử dụng new Fragment(); Tạo hàm newInstance tĩnh lấy dữ liệu làm đối số.

public static MyFragment newInstance(int type) { 
    MyFragment fragment = new MyFragment(); 
    Bundle args = new Bundle(); 
    args.putInt("type", type); 
    fragment.setArguments(args); 
    return fragment; 
} 

Và sau đó bạn có thể nhận được các loại trên onCreate() phương pháp sử dụng dưới đây:

getArguments().getInt("type"); 

Và sau đó bạn sẽ có được các loại, bạn có thể gọi webservice của bạn cho phù hợp, và sau đó bạn có thể thiết lập Views cho phù hợp.

+0

Cảm ơn rất nhiều. Làm việc như người ở. Đã cứu tôi rất nhiều rắc rối. Tôi đã bỏ phiếu nhưng tôi chưa có đủ danh tiếng. – user2469412

+0

Không sao cả. :) Chúc mừng mã hóa. – tasomaniac

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