0

私は2つのクラスを持っています:

Class2 型の ArrayList を含む Class1

次のように新しいオブジェクトを追加しようとすると:

Class2 object = new Class2();
Class1Object.getArrayList().add(object);

次に、 getArrayList() を反復処理すると、オブジェクトが追加されたように見えます

しかし、タイプ class1 の別の ArrayList があり、これを反復すると、追加されたオブジェクトが表示されませんか?

オブジェクトは参照によるものなので、class1 型の ArrayList に追加する必要があると思いました。誰でもこれを説明できますか?

public class Subject implements Serializable {

private static final long serialVersionUID = 1L;
private String subjectName;
private int hours;
private int mins;
private ArrayList<Task> tasks;
private SimpleDateFormat date;

public Subject(String subjectName){
    this.subjectName = subjectName;
    hours = 0;
    mins = 0;
    tasks = new ArrayList<Task>();
    date = null;
}


public ArrayList<Task> getTasks() {
    return tasks;
}

}

public class Task implements Serializable {

    private static final long serialVersionUID = 2L;
    private String description;
    private boolean isCompleted;

    public Task(String description){
        this.description = description;
        isCompleted = false;
    }   

}

だから私は持っています:

ArrayList<Subject> subjectsList = new ArrayList<Subject>();

そして、特定のサブジェクトに新しいタスクを追加したいので、次のようにします。

Task task = new Task(description);
ArrayList<Task> taskList = subject.getTasks();
taskList.add(task);

そして、subject.getTasks();そこを反復すると、subjectListを反復すると、新しいタスクはもうありません。

新しいタスクを表示する最初のループは次のとおりです。

for (Task task : subject.getTasks()){
   System.out.println( task.toString() );
}

そして、からのすべてのオブジェクトを反復処理するためのコードsubjectsList

for (Subject s : subjectsList){
 for (Task t : s.getTasks()){
   System.out.println( t.toString() );
    }
}



Bundle bundle = getIntent().getExtras();
  if (bundle != null) {
    subject = (Subject) bundle.get("selected_subject");
    subjectsList = (ArrayList<Subject>) bundle.get("subjects_list");
   }
4

5 に答える 5