Java Android-将子项添加到排序的ListView

Java Android-将子项添加到排序的ListView,java,android,listview,sorting,subitem,Java,Android,Listview,Sorting,Subitem,对于ListView,我有以下代码: private class CollegeItem { private double gpa; private int act; private int sat; private String name; private String location; private double score; private boolean match; private double scoreDistance; private boolean uaero, uag

对于ListView,我有以下代码:

private class CollegeItem {
private double gpa;
private int act;
private int sat;
private String name;
private String location;
private double score;
private boolean match;
private double scoreDistance;


private boolean uaero, uagri, ubio, uchem, ucivil, ucomp, uelec, uphys, uenvi, uindus, umate, umech;

public CollegeItem(double gpa, int act, int sat, String name, String location, boolean uaero, boolean uagri, boolean ubio, boolean uchem,
                    boolean ucivil, boolean ucomp, boolean uelec, boolean uphys, boolean uenvi, boolean uindus, boolean umate, boolean umech){
    this.gpa = gpa;
    this.act = act;
    this.sat = sat;
    this.name = name;
    this.location = location;
    this.uaero = uaero;
    this.uagri = uagri;
    this.ubio = ubio;
    this.uchem = uchem;
    this.ucivil = ucivil;
    this.ucomp = ucomp;
    this.uelec = uelec;
    this.uphys = uphys;
    this.uenvi = uenvi;
    this.uindus = uindus;
    this.umate = umate;
    this.umech = umech;

    if(act/36.0>sat/2400.0){
        this.score = 0.6*gpa*25.0+0.4*(act/36.0)*100.0;
    }else{
        this.score = 0.6*gpa*25.0+0.4*(sat/2400.0)*100.0;
    }
    scoreDistance = Math.abs(this.score-MainActivity.scoreDouble)/MainActivity.scoreDouble;
    if(uagri&&ListOfMajors.agricultural||uchem&&ListOfMajors.chem||uaero&&ListOfMajors.aerospace||ubio&&ListOfMajors.biomed||ucivil&&ListOfMajors.civil
            ||ucomp&&ListOfMajors.computer||uelec&&ListOfMajors.electrical||uphys&&ListOfMajors.physics||uenvi&&ListOfMajors.environment||uindus&&ListOfMajors.industrial
            ||umate&&ListOfMajors.materials||umech&&ListOfMajors.mechanical){
        scoreDistance--;
    }else{
        scoreDistance = Math.abs(this.score-MainActivity.scoreDouble)/MainActivity.scoreDouble;
    }
}

ArrayList<CollegeItem> collegeLists=new ArrayList<CollegeItem>();
ArrayList<String> nameList = new ArrayList<String>();

Comparator<CollegeItem> compare = new Comparator<CollegeItem>(){
    public int compare(CollegeItem a, CollegeItem b){
            return Double.compare(a.getScoreDistance(), b.getScoreDistance());
    }
};
 Collections.sort(collegeLists, compare);

    for(CollegeItem collegeList : collegeLists){
        nameList.add(collegeList.getName());
    }

    setListAdapter(new ArrayAdapter<String>(CollegeList.this, android.R.layout.simple_list_item_1, nameList));
私人类学院项目{
私人双gpa;
私人法案;
私人国际卫星;
私有字符串名称;
私有字符串位置;
私人双积分;
私有布尔匹配;
私人双倍计分距离;
私有布尔uaero、uagri、ubio、uchem、ucivil、ucomp、uelec、uphys、uenvi、uindus、umate、umech;
公共学院项目(双gpa、整数act、整数sat、字符串名称、字符串位置、布尔uaero、布尔uagri、布尔ubio、布尔uchem、,
布尔ucivil、布尔ucomp、布尔uelec、布尔uphys、布尔uenvi、布尔UINDU、布尔umate、布尔umech){
this.gpa=gpa;
this.act=act;
this.sat=sat;
this.name=名称;
这个位置=位置;
this.uaero=uaero;
this.uagri=uagri;
this.ubio=ubio;
this.uchem=uchem;
this.ucivil=ucivil;
this.ucomp=ucomp;
this.uelec=uelec;
this.uphys=uphys;
this.uenvi=uenvi;
this.uindus=uindus;
this.umate=umate;
this.umech=umech;
如果(act/36.0>sat/2400.0){
这个分数=0.6*gpa*25.0+0.4*(act/36.0)*100.0;
}否则{
这个分数=0.6*gpa*25.0+0.4*(sat/2400.0)*100.0;
}
scoreDistance=Math.abs(this.score MainActivity.scoreDouble)/MainActivity.scoreDouble;
if(uagri和主要成分列表。农业| | uchem和主要成分列表。化学| | uaero和主要成分列表。航空航天| | ubio和主要成分列表。生物医药| | ucivil和主要成分列表。民用
||ucomp和主要列表。计算机| | uelec和主要列表。电气| | uphys和主要列表。物理| | uenvi和主要列表。环境| | uindus和主要列表。工业
||umate和列表主要部件。材料(umech和列表主要部件。机械){
分数距离--;
}否则{
scoreDistance=Math.abs(this.score MainActivity.scoreDouble)/MainActivity.scoreDouble;
}
}
ArrayList collegeLists=新的ArrayList();
ArrayList nameList=新的ArrayList();
比较器比较=新比较器(){
公共整数比较(集合项a、集合项b){
返回Double.compare(a.getScoreDistance(),b.getScoreDistance());
}
};
收集。排序(收集者,比较);
用于(学院项目学院讲师:学院讲师){
add(colleclist.getName());
}
setListAdapter(新的ArrayAdapter(colleclist.this,android.R.layout.simple_list_item_1,nameList));

到目前为止,ListView的顺序是字段变量scoreDistance的升序。它是通过comparator按这种方式排序的。列表的实际内容是字段变量名。我现在想将字段变量位置添加为每个名称的子项。它仍然应该按同样的方式排序。我已经查看了mu多个关于添加子项的问题,但仍不确定如何进行。我该怎么做?

您应该创建一个自定义适配器。在保持元素顺序不变的情况下,我该如何做?适配器不会为您对项目进行排序。因此,如果您对这些项目进行排序,它们将以相同的顺序显示。我是适配器的新手,请告诉我提供示例代码?