私は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");
}