我有五个不同长度的ArrayLists但是当我连接所有数组列表时,我得到一个数组索引超出绑定异常,因为所有数组列表中的项不一样。我想要在找不到项目时包含null,或者使数组列表具有相同的大小。如何在Android中实现这一点..请帮我一些例子,并提前感谢
arraylist 1 = 25项 attaylist 2 = 35项 arraylits 3 = 5项 arraylist 4 = 13项 arraylist 5 = 40项。
当我在一个视图中显示所有项目时(例如,网页视图),当滚动到第6个项目时,我可以滚动到最多5个项目,我得到例外。如何克服这一点。请帮忙
这是我的代码,我解析并添加到列表中。
答案 0 :(得分:3)
我不知道,但看看这是否有帮助:
package your.package
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class TestProjectActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
setContentView(tv);
ArrayList<Integer> a = new ArrayList<Integer>();
a.add(1);
a.add(2);
a.add(3);
a.add(4);
ArrayList<Integer> b = new ArrayList<Integer>();
b.add(5);
b.add(6);
b.add(7);
a.addAll(b);
String p = "";
for (int i = 0; i < a.size(); i++)
{
p = String.format("%s, %d", p, a.get(i));
}
tv.setText(p);
}
}
答案 1 :(得分:2)
如果您的代码已发布,则更容易看到问题所在。如果你想在获得越界异常时返回null,但是,这样的事情应该这样做:
try {
//your code that's throwing index out of bounds
//this block should include as little of your code as possible
//for example, don't put a for loop in here --
// put this inside the for loop if you can.
} catch (IndexOutOfBoundsException e) {
return null;
// or do what you need to do with the null
}
Here有一些关于异常处理的介绍性材料,以防您查看。
答案 2 :(得分:2)
这不是android ..它的纯java问题 从技术上讲,arraylist是一种可变阵列...... 只是检查你调用的索引的位置是否小于arrayList的大小,如果是的话,去连接,如果不是这样,你就是超出绑定异常.. 或者您可以尝试将您的arraylist转换为这样的数组(假设数据类型为String):
String mArray[]=mArrayList.toArray(new String[SIZE]);
如果mArrayList大小<1,则将空值分配给空元素。 MARRAY
祝你好运答案 3 :(得分:2)
在课堂上制作一些默认值 喜欢
public class BOOK {
String BId="";
String BTitle="";
String prelimTitle="";
String prelimIntro="";
String prelimInsight="";
}
答案 4 :(得分:2)
我建议使用另一种数据结构,并将该项目列表添加到主书结构中,新的Datastructre可能是:
case XmlPullParser.END_TAG:
if (xmlpullparser.getName().toString().equals("BOOK")) {
book.setInsightList(insightList);
book.setcasestudyList(casestudyList);
book.setquotesList(quoteList);
book.setoneminwonderList(oneminwonderList);
book.setsecretList(secretList);
bookList.add(book);
Intro.book = book;
} else if (xmlpullparser.getName().toString().equals("chapter")) {
if(objInsight==null)
objInsight=new INSIGHT();
listInsights.add(objInsight);
objInsight=null;
} else if (xmlpullparser.getName().toString().equals("secret")) {
secretList.add(secret);
} else if (xmlpullparser.getName().toString().equals("prelim")) {
secretList.add(secret);
this.prelim = false;
} else if (xmlpullparser.getName().toString().equals("prelimTitle")) {
this.prelimTitle = false;
} else if (xmlpullparser.getName().toString().equals("prelimIntro")) {
this.prelimIntro = false;
} else if (xmlpullparser.getName().toString()
.equals("prelimInsight")) {
this.prelimInsight = false;
} else if (xmlpullparser.getName().toString()
.equals("prelimContent")) {
this.prelimContent = false;
} else if (xmlpullparser.getName().toString()
.equals("chapterIntro")) {
secretList.add(secret);
this.chapterIntro = false;
} else if (xmlpullparser.getName().toString().equals("bold")) {
this.chapterIntrobold = false;
} else if (xmlpullparser.getName().toString().equals("secretIntro")) {
this.secretIntro = false;
} else if (xmlpullparser.getName().toString().equals("insight")) {
} else if (xmlpullparser.getName().toString().equals("caseStudy")) {
this.caseStudy = false;
casestudyList.add(casestudy);
} else if (xmlpullparser.getName().toString().equals("oneMinute")) {
this.oneMinute = false;
oneminwonderList.add(oneminwonder);
} else if (xmlpullparser.getName().toString().equals("quote")) {
quoteList.add(quotes);
} else if (xmlpullparser.getName().toString()
.equals("quoteContent")) {
this.quoteContent = false;
} else if (xmlpullparser.getName().toString()
.equals("quoteCitation")) {
this.quoteCitation = false;
} else if (xmlpullparser.getName().toString()
.equals("secretContent")) {
this.secretContent = false;
}
break;
答案 5 :(得分:1)
你有这个例外,可能没有足够的空间进入arraylist。 有三个arraylist,如大小为10,b大小为10,c大小为10。
现在您将所有arraylist添加到ArrayList z中,大小为10,那么总共有30个数据,但索引只有10.因此它会导致IndexOutofBount异常。
解决方案
所以要解决这个问题,你必须采用新的ArrayList z,其大小与所有三个arraylist大小的总和相同。 然后将三个arrayList数据添加到该arrayList。
您可以使用以下代码将Size指定给ArrayList。
ArrayList<Integer>[size] arrayOfLists = new ArrayList<Integer>[size]();
希望它会对你有所帮助。
如果没有,请告诉我。
享受。 :))