Подтвердить что ты не робот

NoSuchMethod с addAll в адаптере?

У меня есть подкласс ArrayAdapter, объявленный таким образом

public class ShoppingCartAdapter extends ArrayAdapter<ShoppingCart> {

и все работает нормально. Теперь вдруг (?) У меня проблемы с этим на моем Nexus S, работающем на 2.3.6, или с эмулятором 2.2 с металированием

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

однако он все еще отлично работает напр. мой Xoom с 3.2.

Я не переопределяю методы super addAll, и поскольку он работает на каком-то устройстве, я не уверен, где искать следующий. Любые подсказки?

UPDATE:

Я заменил adapter.addAll(newCarts) на

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

и это работает. Я предполагаю, что это имеет какое-то отношение к дженерикам, но еще не успело прибить его.

4b9b3361

Ответ 1

addAll(...)

добавлен начиная с API 11 (Android 3.0). Здесь doc.

Ответ 2

addAll (...) недоступен на более низких уровнях API. Его добавили в API 11 и выше. Поэтому используйте add (...), чтобы исправить эту проблему следующим образом

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

вместо

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