我无法弄清楚如何从使用类的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名称添加到适配器,因为该数组有一个类向其添加信息。但我只想在列表视图中显示数组的第一个名称。
答案 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);
}
}