使用类将arraylist添加到数组适配器

时间:2017-03-11 02:12:52

标签: java class arraylist android-arrayadapter

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

我怎么能这样做?

我有这个单独的类(不确定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名称添加到适配器,因为该数组有一个类向其添加信息。但我只想在列表视图中显示数组的第一个名称。

2 个答案:

答案 0 :(得分:1)

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

public String getFirstName()
{
return firstName;
}

在你的主要

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

nameList.add(person1.getFirstName());

答案 1 :(得分:1)

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);
    }

}