java为什么需要适配器。add()创建无限循环并崩溃?
我正在制作一个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");
}
应用程序到达日志标记“Inside while loop”并重复该标记,直到应用程序崩溃。我知道cards.size()
在while循环之前是2,所以我看不出应用程序崩溃的原因。我是否正确使用了适配器?请帮忙
# 1 楼答案
你的问题缺少上下文。幸运的是,我知道您的适配器是
ArrayAdapter
类型,并且正在使用cards
初始化它。循环开始时,cards.size()
是2。但是然后你add
给它一些东西,使cards.size()
成为3。然后。。。我想你明白了。您可以通过适配器add
或通过列表add
向适配器/列表对添加一些内容。如果将其同时添加到这两个值中,则将添加两次以下是
ArrayAdapter::add
的代码:其中
mOriginalValues
是用于构造适配器的同一列表mObjects
是它们的筛选版本