Java 为什么adapter.add()会创建无限循环并崩溃?

Java 为什么adapter.add()会创建无限循环并崩溃?,java,android,loops,adapter,android-arrayadapter,Java,Android,Loops,Adapter,Android Arrayadapter,我正在制作一个Android应用程序,我的adapter.add()实现似乎使应用程序崩溃。我不得不使用日志标记来发现我的代码奇怪地陷入了循环中。代码如下: int i =0; if(cards.size()>0){ Log.i("KOOL","Checked arraylist size =" + cards.size()); while(i < cards.size()){ Log.i("KOOL","Inside while loop");

我正在制作一个Android应用程序,我的
adapter.add()
实现似乎使应用程序崩溃。我不得不使用日志标记来发现我的代码奇怪地陷入了循环中。代码如下:

int i =0;
if(cards.size()>0){
    Log.i("KOOL","Checked arraylist size =" + cards.size());
    while(i < cards.size()){
        Log.i("KOOL","Inside while loop");
        adapter.add(cards.get(i));
        i++;
    }
    Log.i("KOOL","Added data to adapter");
    adapter.notifyDataSetChanged();
    Log.i("KOOL","Finished OnActivityResult");
}
inti=0;
如果(cards.size()>0){
Log.i(“KOOL”,“Checked arraylist size=“+cards.size());
而(i

应用程序到达日志标记“Inside while loop”并重复该标记,直到应用程序崩溃。我知道,
cards.size()
在while循环之前是2,所以我看不出应用程序崩溃的原因。我是否正确使用了适配器?请帮忙

你的问题缺少上下文。幸运的是,我知道您的适配器是
ArrayAdapter
类型,并且正在使用
卡进行初始化。循环开始时,
cards.size()
2。但是你可以在上面添加一些东西,制作
cards.size()
be3。然后。。。我想你明白了。您可以通过适配器
add
,或通过列表
add
,向适配器/列表对添加内容。如果将其同时添加到这两个值中,则将添加两次

以下是
ArrayAdapter::add
的代码:

public void add(T object) {
    synchronized (mLock) {
        if (mOriginalValues != null) {
            mOriginalValues.add(object);
        } else {
            mObjects.add(object);
        }
    }
    if (mNotifyOnChange) notifyDataSetChanged();
}

其中,
mOriginalValues
是用于构造适配器的同一列表
mObjects
是它们的过滤版本。

@tibtof:我实际上在前面的问题中看到了他的全部代码,并且已经指出他做错了。你是说adapter.add(cards.get(I))添加到arraylist卡中了吗?那么,我到底需要while循环,还是在这个代码之前增加卡数时适配器会增加?@Daniel Katz:你根本不需要这个循环,适配器共享你用来初始化它的列表。适配器中的
add
方法的唯一优点是它将为您调用
notifyDataSetChanged
。谢谢!我想我真的不知道如何使用适配器。现在我的应用程序通过了那个部分,但由于另一个原因崩溃了。在LogCat中,它首先说“致命异常:main”,然后是“java.lang.NullPointerException”,然后是一堆东西。你知道会发生什么事吗?你需要更多我的代码吗?@Daniel Katz:从错误代码中,我能告诉你的是,你试图取消对
null
指针的引用。