在适配器中使用addAll的NoSuchMethod?

时间:2011-12-19 23:05:13

标签: java android

我有一个像这样声明的ArrayAdapter的子类

public class ShoppingCartAdapter extends ArrayAdapter<ShoppingCart> {

一切都运转良好。现在突然(?)我在运行2.3.6的Nexus S或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。

我没有覆盖超级addAll方法,因为它可以在某些设备上运行,我不知道下一步该在哪里查看。任何提示?

更新:

我用

替换了adapter.addAll(newCarts)
for (ShoppingCart cart : newCarts) {
  adapter.add(cart);
}

这是有效的。我认为它与仿制药有关,但一直无法确定它。

2 个答案:

答案 0 :(得分:44)

addAll(...)
从API 11(Android 3.0)开始添加

。这里是doc.

答案 1 :(得分:12)

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(...)