从对象内的列表中检索值

时间:2019-01-10 12:36:28

标签: android list object nested access

  

我正在尝试从位于ArrayList内的对象检索值   在另一个对象中。

基本结构是:

+++++

对象-> 作者对象的列表-> 作者对象->作者的名字变量 < / p>

+++++

我想访问给定书的第一作者名字

+++++

我创建了一个“图书”类,该类如下所示:

public class Book {

private String mTitle;

private List<Author> mAuthors;

public Book(String title, List<Author> authors) {
    this.mTitle = title;
    this.mAuthors = authors;
}

public String getmTitle() {
    return mTitle;
}

public List<Author> getmAuthors() {
    return mAuthors;
}
}

此类还包含一个作者对象列表

public class Author {

private String mFirstName;
private String mLastName;

public Author(String firstName, String lastName) {
    this.mFirstName = firstName;
    this.mLastName = lastName;
}

public String getmFirstName() {
    return mFirstName;
}

public String getmLastName() {
    return mLastName;
}
}

然后我在 MainActivity中创建一个Author实例的一个

 ArrayList<Author> authors = new ArrayList<>();

    authors.add(new Author("Hans", "Schwabe"));

并且在创建图书实例

时使用此列表
Book buch = new Book("Säulen der Erde",authors);

然后我尝试访问列表中第一位作者的名称时,我使用以下代码:

List<Author> authorArrayList = new ArrayList<Author>();
authorArrayList = buch.getmAuthors();
authorArrayList.get(1).getmFirstName();

此时,我的应用崩溃了

**

  

因此:检索名称的正确方法是什么   名单上的第一作者?

**

1 个答案:

答案 0 :(得分:1)

问题是您有1位作者,并且正尝试从索引1中检索它。索引应为0。编程中的索引从0开始。

如果你写

authorArrayList.get(0).getmFirstName();

应该可以