我是Android开发的新手。在下面,我知道如何循环学校列表。但是,我不知道如何使用循环来显示学校的学生,因为每个学校实例都是手动创建的。有没有办法可以显示每个学校及其学生使用循环?感谢。
我的数据如下:
school id: A1, "Point Grey"
Student name: "Kent", "Age": 43
Student name: "Jane", "Age": 18
Student name: "Winnie", "Age": 19
school id: B1, "Prince of Wales"
Student name: "Steven", "Age": 11
Student name: "Michelle", "Age": 30
Student name: "Ronald", "Age": 20
我的目录如下:
public class DIRECTORY {
private Map<String, SCHOOL> schools = new HashMap<String, SCHOOL>();
public void setSchools(Map<String, SCHOOL> schoolsMap) {
this.schools = schoolsMap;
}
public Map<String, SCHOOL> getSchools() {return this.schools;}
public void addSchool(String schoolId, String schoolName) {
SCHOOL school = new SCHOOL();
school.setSchoolId(schoolId);
school.setSchoolName(schoolName);
schools.put(schoolId,school);
}
public SCHOOL getSchoolById(String schoolId) {
schools.get(schoolId);
}
}
我的学校课程如下:
public class SCHOOL {
private String schoolId;
private String schoolName;
private List<STUDENT> students = new ArrayList<>();
//getter and setter for schoolid and school name
public void setStudents(STUDENT students) {
this.students = (List<STUDENT>) students;
}
public List<STUDENT> getStudents() {return this.students;}
public void addStudent(String names, String age) {
STUDENT student = new STUDENT();
student.setNames(names);
student.setAge(age);
students.add(student);
}
我的学生课程如下:
public class STUDENT {
private String names;
private String age;
//getter and setter for name and age
}
我的数据如下:
private static DIRECTORY createDummySchool(){
DIRECTORY directory = new DIRECTORY();
directory.addSchool("A1", "Point Grey");
directory.addSchool("B1", "Prince of Wales");
SCHOOL schoolA1 = directory.getSchoolById("A1");
schoolA1.addStudent("kent", "43");
schoolA1.addStudent("Winnie", "19");
schoolA1.addStudent("Jane", "18");
SCHOOL schoolB1 = directory.getSchoolById("B1");
schoolB1.addStudent("Steven", "11");
schoolB1.addStudent("Michelle", "30");
schoolB1.addStudent("Ronald", "20");
return directory;
}
我的目录列表如下:
public String outputDirectorylist(List<DIRECTORY> directorylist) {
StringBuilder sb = new StringBuilder();
for (DIRECTORY directory:directorylist) {
sb.append(school.getSchoolId());
sb.append(",");
sb.append(school.getSchoolName());
sb.append(";");
}
return String.valueOf(sb);
}
我的主要课程如下:
.....
DIRECTORY directorylist = directory.getSchools();
// How to loop the student in each school?
Log.d(tag, outputSchool(directorylist));
.....
答案 0 :(得分:2)
Map<String,SCHOOL> schools = directory.getSchools();
for( SCHOOL school: schools.values() ){
for( STUDENT student: school.getStudents() ){
Log.d( ... student.getName() + " " + student.getAge() ... );
}
}
假设SCHOOL类中有一个getStudents,并且getSchools从类DIRECTORY返回Map。
答案 1 :(得分:1)
一种方法是覆盖类中的toString()
。
E.g。
public class STUDENT {
private String names;
private String age;
//getter and setter for name and age
public String toString() {
StringBuilder b = new StringBuilder();
b.append("name: ");
b.append(names == null ? " " : names);
b.append(" age: ");
b.append(age == null ? " " : age);
return b.toString();
}
}
调用Log.d("LOG", " " + listOfStundes)
将打印listOfStundes
中定义的toString()
内容。您可以将相同的原则应用于您的其他类