如何使用android的简单getter和setter

时间:2013-05-09 09:35:36

标签: java android arraylist getter-setter indexoutofboundsexception

我有一个国家/地区,其中有一个存储国家的arraylist。我创建了一个get和set来从数组列表中添加和获取指定索引中的项目,但我不会工作。每当我从arraylist调用一个索引时,我得到一个越界异常,因为该数组是空的或至少似乎是。

public class country extends Application {

    public ArrayList<country> countryList = new ArrayList<country>();
    public String Name;
    public String Code;
    public String  ID;

    public country()
    {

    }

    public country(String name, String id, String code)
    {
        this.Name = name;
        this.ID = id;
        this.Code = code;
    }

    public void setCountry(country c)
    {
        countryList.add(c);
    }

    public country getCountry(int index)
    {   
        country aCountry = countryList.get(index);
        return aCountry;
    }

调用我使用的setter。我在for循环中执行此操作,因此它添加了200多个元素

country ref = new country();

ref.setCountry(new country (sName, ID, Code));

然后当我想得到一个索引

String name = ref.countryList.get(2).Name;

我做了同样的事情,但使用了一个本地arraylist并且它填充得很好,我能够显示名称,所以数据源不是问题,无论我做错了什么设置并在国家类的arraylist中获取数据< / p>

3 个答案:

答案 0 :(得分:0)

您可以访问不存在的索引。您只能添加一个只能访问的国家/地区:

String name = ref.countryList.get(0).Name;

你应该重新考虑你的设计。 public属性不是最佳实践方式。这就是你应该首先编写getter和setter方法的原因。

你应该做这样的事情:

public Country getCountry(int index)
{
    if(index < countryList.size())
    {
        return countryList.get(index);
    }
    return null;
}

答案 1 :(得分:0)

String name = ref.countryList.get(2).Name;中,当您只添加一个时,您正试图获取列表中的第三个元素...
它应该是String name = ref.countryList.get(0).Name;,你需要在之前检查是否没有接收到空指针异常

答案 2 :(得分:-1)

执行ref.countryList.get(0).Name,因为您只在列表中添加了一项。

我会建议更多像

 ref.countryList.get(0).getName()