Ответ 1
addAll(...)
добавлен начиная с API 11 (Android 3.0). Здесь doc.
У меня есть подкласс 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);
}
и это работает. Я предполагаю, что это имеет какое-то отношение к дженерикам, но еще не успело прибить его.
addAll(...)
добавлен начиная с API 11 (Android 3.0). Здесь doc.
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(...)