Android 设置数组';s元素,将其他元素设置为同一数组

Android 设置数组';s元素,将其他元素设置为同一数组,android,Android,我有一个类“college”有一个内部类数组参数“Professor”这个内部类有一个字符串数组参数“Materials”,我使用一个方法“addProfessor”将Professor添加到外部类数组中,现在在这个addProfessor方法中我创建了一个新的Professor,将其材质设置为传递的数组,但是每次我添加一个新教授时,数组中的所有教授都有相同的材料数组 这是教授班 private class Professor{ private String Name;

我有一个类“college”有一个内部类数组参数“Professor”这个内部类有一个字符串数组参数“Materials”,我使用一个方法“addProfessor”将Professor添加到外部类数组中,现在在这个addProfessor方法中我创建了一个新的Professor,将其材质设置为传递的数组,但是每次我添加一个新教授时,数组中的所有教授都有相同的材料数组

这是教授班

    private class Professor{
    private String Name;
    private ArrayList<String> Materials;
    private String Department;

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public ArrayList<String> getMaterial() {
        return Materials;
    }

    public void setMaterial(ArrayList<String> material) {

        Materials = material;
    }

    public String getDepartment() {
        return Department;
    }

    public void setDepartment(String department) {
        Department = department;
    }

    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append("Professor{" + "Name='").append(Name).append('\'').append("Material: ");
        for(String mat : Materials){
            Log.d("Material",mat);
            builder.append(mat).append(",");
        }
        builder.append("Department: ").append(Department);
        return builder.toString();

    }
}
私人课堂教授{
私有字符串名称;
私人ArrayList材料;
私人弦乐部;
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
名称=名称;
}
公共阵列列表getMaterial(){
归还材料;
}
公共void集合材质(ArrayList材质){
材料=材料;
}
公共部门(){
退货部;
}
公共部门(字符串部门){
部门=部门;
}
@凌驾
公共字符串toString(){
StringBuilder=新的StringBuilder();
append(“Professor{“+”Name=”).append(Name).append('\'').append(“Material:”);
用于(绳垫:材料){
日志d(“材料”,材料);
builder.append(mat.append(“,”);
}
builder.append(“部门:”).append(部门);
返回builder.toString();
}
}
这里是add方法

   public void addProfessor(String Name,@Nullable String department,@Nullable ArrayList<String> materials){
    Professor professor = new Professor();
    professor.setDepartment(department);

    professor.setMaterial(materials);
    professor.setName(Name);
    professorsMap.put(Name,professor);
    Professors.add(professor);
    for(String mat :materials){
        Log.d("ADDPROF",mat);
    }
    for(Professor prof : Professors){
        Log.d("MatProf",prof.toString());
    }
}
public void addProfessor(字符串名称,@Nullable String department,@Nullable ArrayList materials){
教授=新教授();
教授,系(系);
教授:材料(材料);
教授:setName(姓名);
教授Map.put(姓名,教授);
添加(教授);
用于(绳垫:材料){
Log.d(“ADDPROF”,mat);
}
(教授:教授){
Log.d(“MatProf”,prof.toString());
}
}
我添加的代码(我暗示了与professor数组无关的代码)

ArrayList profMaterials=new ArrayList();
submitMat.setOnClickListener(v->{
如果(!professorMaterialLayout.getEditText().getText().toString().isEmpty()){
添加(professorMaterialLayout.getEditText().getText().toString());
professorMaterialLayout.getEditText().setText(“”);
}
});
submitTeacher.setOnClickListener(v->{
字符串countString=staffNumber.getText().toString();
int Count=Integer.parseInt(counterString.subSequence(counterString.indexOf(“#”)+1,counterString.length()).toString());
如果(!professorNum.getText().toString().isEmpty()&&&!assistantNumb.getText().toString().isEmpty()){
if(Count==Integer.parseInt(professorNum.getText().toString())&&counterString.contains(“Professor”)){
college.addProfessor(professorNameLayout.getEditText().getText().toString())
,professorDepartmentLayout.getEditText().getText().toString()
(四),;
profMaterials.clear();
}否则{
college.addProfessor(professorNameLayout.getEditText().getText().toString())
,professorDepartmentLayout.getEditText().getText().toString()
(四),;
profMaterials.clear();
}
}
})强调文本*

您没有在任何地方创建
材料
数组列表的新实例,也没有在
教授
中直接引用已通过的
材料
列表,这与所有
教授
的情况相同,请将
添加教授
方法修改为下面

public void addProfessor(String Name,@Nullable String department,@Nullable ArrayList<String> materials){
    Professor professor = new Professor();
    professor.setDepartment(department);
    //create new instance for each professor
    professor.setMaterial(new ArrayList<>(materials));
    professor.setName(Name);
    professorsMap.put(Name,professor);
    Professors.add(professor);
    for(String mat :materials){
        Log.d("ADDPROF",mat);
    }
    for(Professor prof : Professors){
        Log.d("MatProf",prof.toString());
    }
}
public void addProfessor(字符串名称,@Nullable String department,@Nullable ArrayList materials){
教授=新教授();
教授,系(系);
//为每个教授创建新实例
setMaterial教授(新ArrayList(materials));
教授:setName(姓名);
教授Map.put(姓名,教授);
添加(教授);
用于(绳垫:材料){
Log.d(“ADDPROF”,mat);
}
(教授:教授){
Log.d(“MatProf”,prof.toString());
}
}

但每次单击submitMaterial按钮时,我都会清除它,然后添加!但它仍在工作!!
public void addProfessor(String Name,@Nullable String department,@Nullable ArrayList<String> materials){
    Professor professor = new Professor();
    professor.setDepartment(department);
    //create new instance for each professor
    professor.setMaterial(new ArrayList<>(materials));
    professor.setName(Name);
    professorsMap.put(Name,professor);
    Professors.add(professor);
    for(String mat :materials){
        Log.d("ADDPROF",mat);
    }
    for(Professor prof : Professors){
        Log.d("MatProf",prof.toString());
    }
}