2016-07-05 12 views
5

Tôi đã sử dụng cả ArrayList<>JsonArray làm bộ dữ liệu trong bộ điều hợp. Một trong những khác biệt chính mà tôi thấy là các thay đổi tập dữ liệu cho dữ liệu cục bộ trong Adapter không được phản ánh lại trong lớp gọi cho JsonArray.Sử dụng JsonArray vs ArrayList làm bộ dữ liệu cho Bộ điều hợp RecyclerView

Tôi muốn biết sử dụng cái nào tốt hơn và quan sát của tôi có đúng không.

Ngoài ra nếu tập dữ liệu của tôi liên quan đến việc trích xuất dữ liệu từ dịch vụ web (cung cấp cho tôi dữ liệu biểu mẫu Json), tôi sẽ đổi nó thành ArrayList <> tốt hơn.

+0

Bạn có thể vui lòng giải thích, ý của bạn là gì bởi "thay đổi bộ dữ liệu cho dữ liệu cục bộ trong Bộ điều hợp không được phản ánh lại trong lớp gọi cho JsonArray"? –

+0

Có. Tôi có một tập dữ liệu trong MainActivity. Tôi đang chuyển dữ liệu đó đến lớp Adapter bằng cách sử dụng một hàm và sau đó gọi notifyDataSetChanged(). Những thay đổi trong tập dữ liệu mà tôi tạo ra không được đồng bộ khi sử dụng JsonArray nhưng chúng được đồng bộ khi sử dụng ArrayList <>. – Harshit

+0

@Harshit JsonArray của bạn có chứa dữ liệu có cấu trúc hơn không? – JJ86

Trả lời

2

Theo như tôi biết JsonArray không chậm hơn nhiều so với ArrayList. Vì vậy, tôi tin rằng bạn nên được ok sử dụng JsonArray. Chúng tôi sẽ cần phải xem một số mã để giúp đỡ với vấn đề khi sử dụng jsons.

1

JsonArray sử dụng nội bộ ArrayList, vì vậy độ trễ ít hơn vì gọi nội bộ nhanh trong Java.

Nhưng nếu bạn chuyển đổi JsonArray thành ArrayList và JsonArray được chứa nhiều dữ liệu phức tạp hơn thì việc truy cập vào ArrayList nhanh chóng theo sự dễ dàng của nhà phát triển và hiệu suất của ứng dụng.

1

Vâng jsonArray là một giải pháp nhanh chóng, do đó bạn chắc chắn có thể sử dụng nó như bộ dữ liệu của bạn và vẫn còn nếu bạn muốn chuyển đổi JsonArray vào danh sách mảng để đạt được tất cả các phương pháp có sẵn cho nó sau đó đọc câu trả lời này

https://stackoverflow.com/a/17037364/5476209

Trong trường hợp của bạn tốt của nó để đi với JsonArray nhưng một cách tốt và đề nghị cách mạnh mẽ là sử dụng GSON tôi sẽ nói một cách tiếp cận vàng bất cứ khi nào bạn làm việc với Json tôi sẽ damn thích nó, xem câu trả lời này.

Google Gson - deserialize list<class> object? (generic type)

1

JSONArray nội bộ sử dụng ArrayList. Nó chỉ là wrapper trên ArrayList. Vì vậy, tôi muốn nói rằng không có sự khác biệt. JSONObject sử dụng HashMap vì vậy một lần nữa không có nhược điểm thực sự.

1

Có thể sử dụng cả hai. Khi đó là chính xác hơn, Sử dụng một JsonArray cảm thấy như nó phá vỡ MVC. Vì vậy, nếu ngày mai bạn thay đổi từ việc sử dụng Json sang XML, yaml, v.v ... bạn sẽ phải thay đổi mô hình của mình. Lý tưởng nhất, mô hình của bạn nên biết tối thiểu những gì cần thiết để hiển thị các quan điểm và được kết hợp với không có gì ngoài quan điểm. Nếu bạn muốn hiển thị ba nhãn, thì mô hình của bạn chỉ nên chứa ba chuỗi. Vì vậy, tôi sẽ khuyên bạn nên làm cho nó một danh sách.

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