2011-12-19 26 views
25

Tôi có một lớp con của một ArrayAdapter tuyên bố như thế nàyNoSuchMethod với addAll in Adapter?

public class ShoppingCartAdapter extends ArrayAdapter<ShoppingCart> { 

và tất cả mọi thứ đã làm việc tốt. Bây giờ đột nhiên (?) Tôi có vấn đề với điều này trên Nexus S của tôi chạy 2.3.6 hoặc giả lập với 2.2 ném

12-19 14:33:36.136: ERROR/AndroidRuntime(27326): FATAL EXCEPTION: main 
     java.lang.NoSuchMethodError: com.somewhere.mobile.fragment.ShoppingCartListFragment$ShoppingCartAdapter.addAll 

tuy nhiên nó vẫn hoạt động tốt trên ví dụ: Xoom của tôi với 3.2.

Tôi không ghi đè các phương thức siêu addAll và vì nó hoạt động trên một số thiết bị mà tôi không chắc chắn nên tìm ở đâu tiếp theo. Bất kỳ gợi ý nào?

UPDATE:

tôi thay adapter.addAll (newCarts) với

for (ShoppingCart cart : newCarts) { 
    adapter.add(cart); 
} 

và làm việc. Tôi cho rằng nó có liên quan đến Generics nhưng vẫn chưa thể đánh dấu nó.

Trả lời

44
addAll(...) 

đã được thêm vào bắt đầu từ API 11 (Android 3.0). Tại đây, doc.

+0

Doh ... thậm chí không kiểm tra rằng kể từ khi tôi đang sử dụng nó cho ArrayLists tốt trong khác nơi. Tôi ngớ ngẩn quá. Cảm ơn –

+0

Không có vấn đề gì! Đó là phương pháp rất hữu ích, nó sucks rằng họ chỉ cần thêm chỉ bắt đầu từ Android 3.0! – gwa

+1

thì giải pháp cho phiên bản Android cũ hơn là gì? – Emmy

12

addAll (...) không có sẵn ở cấp API thấp hơn. Nó được thêm vào API 11 trở lên. Vì vậy, sử dụng add (...) để khắc phục vấn đề này như sau

for (int i = 0; i < contents.size(); i++) { 
     adapter.add(contents.get(i)); 
    } 

thay vì

//adapter.addAll(contents); //do not use addAll(...) 
+2

Bạn có thể muốn kiểm tra phiên bản xây dựng trong thời gian chạy trước khi thực hiện điều đó, ala "Kiểm tra phiên bản hệ thống tại thời gian chạy": http://developer.android.com/training/basics/supporting-devices/platforms.html. (Vì bạn không cần phải ném addAll và hoàn nguyên về vòng lặp thủ công xấu xí cho tất cả các thiết bị, chỉ những vòng chạy

+0

IMO kiểm tra bản dựng là xấu hơn – Luke

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