Giả định của tôi là bạn đã phân tích cú pháp chuỗi JSON thành một mô hình đối tượng trước khi xem xét cả hai trường hợp ... hãy gọi lớp này là Profile.
Chiến lược 1
Một ArrayAdapter là đủ với một phương pháp overriden getView (..) sẽ nối nhiều lĩnh vực của bạn với nhau theo cách bạn muốn.
ArrayAdapter<Profile> profileAdapter = new ArrayAdapter<Profile>(context, resource, profiles) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v;
// use the ViewHolder pattern here to get a reference to v, then populate
// its individual fields however you wish... v may be a composite view in this case
}
}
tôi khuyên các mẫu ViewHolder cho các danh sách có khả năng lớn: https://web.archive.org/web/20110819152518/http://www.screaming-penguin.com/node/7767
Nó làm cho một sự khác biệt rất lớn.
- Ưu điểm 1. Cho phép bạn áp dụng bố cục phức tạp cho từng mục trên ListView.
- Ưu điểm 2. Không yêu cầu bạn thao tác toString() để phù hợp với màn hình dự định của bạn (sau khi tất cả, giữ mô hình và xem logic riêng biệt không bao giờ là một thực hành thiết kế xấu).
Chiến lược 2
Ngoài ra, nếu phương thức toString() trên lớp đại diện của bạn đã có một định dạng mà có thể chấp nhận để trưng bày, bạn có thể sử dụng mà không cần ArrayAdapter trọng getView().
Chiến lược này đơn giản hơn, nhưng buộc bạn phải đập vỡ mọi thứ thành một chuỗi để hiển thị.
ArrayAdapter<Profile> profileAdapter = new ArrayAdapter<Profile>(context, resource, profiles)
http://stackoverflow.com/questions/3349693/baseadapter-or-arrayadaptor-android kiểm tra điều này. –