使用 class 将数组列表添加到数组适配器

Adding arraylist using a class to an array adapter

我无法弄清楚如何从使用 class 的数组列表添加我的信息,以及如何将信息添加到列表视图中的数组适配器。我正在尝试从这个数组中添加名字。

我怎样才能做到这一点?

我有这个单独的 class(不确定 toString 是否正确):

public class PersonClass {

final private String firstName;
final private String lastName;
final private String birthday;
final private int personPic;

private PersonClass(String fName, String lName, String bDay, int pic) {

    firstName = fName;
    lastName = lName;
    birthday = bDay;
    personPic = pic;

}

public String toString() {
    return firstName+" "+lastName+" "+birthday+" "+personPic;
}

public static void main(String args[]){

    // Information for each person using the PersonClass
    PersonClass person1 = new PersonClass("first name", "last name", "01/01/2000", R.drawable.pic1); 
    // ..... up to 10... 


    // ArrayList
    final ArrayList<PersonClass> personList = new ArrayList<>();

    // Add person data to array list
    personList.add(person1);
    personList.add(person2);
    personList.add(person3);
    personList.add(person4);
    personList.add(person5);
    personList.add(person6);
    personList.add(person7);
    personList.add(person8);
    personList.add(person9);
    personList.add(person10);

  }

}

这是我的阵列适配器。

final ArrayAdapter<String> arrayAd = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,???);

我不能只将 arraylist 名称添加到适配器,因为数组有一个 class 向它添加信息。但我只想在列表视图中显示数组的名字。

为名字写一个getter。成员变量是私有的,以便使用所谓的 getter 和 setter 方法访问它们。因此,您需要在 PersonClass 中使用 getFirstName() 方法。

public String getFirstName()
{
return firstName;
}

在你的主

List<String> nameList = new ArrayList<>();

nameList.add(person1.getFirstName());
import java.util.ArrayList;
import java.util.List;

class Person {
    private String firstName;

    //Might be more fields

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public Person(String firstName) {
        super();
        this.firstName = firstName;
    }

}

public class SO1 {

    public static void main(String[] args) {

        List<Person> personList = new ArrayList<Person>();
        //Either you can directly add first name in adaptor
        for (int i = 0; i < 10; i++) {
            personList.add(new Person("Name "+i));
        }

        //If you have list than you have to iterate it and add first name
        List<String> adaptorList = new ArrayList<String>();
        personList.forEach( p -> adaptorList.add(p.getFirstName()));

        System.out.println(adaptorList);
    }

}