如何在android中制作相同大小的所有arraylists

时间:2012-01-27 07:05:02

标签: java android arraylist

我有五个不同长度的ArrayLists但是当我连接所有数组列表时,我得到一个数组索引超出绑定异常,因为所有数组列表中的项不一样。我想要在找不到项目时包含null,或者使数组列表具有相同的大小。如何在Android中实现这一点..请帮我一些例子,并提前感谢

arraylist 1 = 25项 attaylist 2 = 35项 arraylits 3 = 5项 arraylist 4 = 13项 arraylist 5 = 40项。

当我在一个视图中显示所有项目时(例如,网页视图),当滚动到第6个项目时,我可以滚动到最多5个项目,我得到例外。如何克服这一点。请帮忙

这是我的代码,我解析并添加到列表中。

6 个答案:

答案 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]();

希望它会对你有所帮助。

如果没有,请告诉我。

享受。 :))