2017-10-18 106 views
-4

我想創建一個使用for循環在我的MainActivity.java中的虛擬對象的ArrayList。這似乎是我得到我創建的每個對象的對象引用做工精細:創建新對象後ArrayList爲空

for(int i=0; i < 10; i++){ 
    new TaskObjects("Title " + i, "Category " + i, "Description " + i, i + 10); 
    Log.d("For Loop", "" + i); 
} 

我有一個日誌(this.toString())返回10次這樣的構造函數中:

d/ARRAY:[email protected](每個不同ID)

TaskObjects類:

public class TaskObjects { 
    private String title; 
    private String category; 
    private String description; 
    private int taskPosterID; 
    private ArrayList<TaskObjects> tasksArray = new ArrayList<>(); 

    public TaskObjects(String title, String category, String description, int taskPosterID){ 
    this.title = title; 
    this.category = category; 
    this.description = description; 
    this.taskPosterID = taskPosterID; 
    tasksArray.add(this); 
    Log.d("ARRAY",this.toString()); 
    } 
    //getters and setters 
} 

然而,當我嘗試返回所述陣列的尺寸,則返回0

+1

'我嘗試返回數組的大小,它返回0.'在哪裏? – Ravi

+0

也許你打算讓'tasksArray'靜態? – Zircon

+0

基本上任何地方我實例化類和運行object.getTasks()。size() –

回答

0
public class TaskObjects { 
    private String title; 
    private String category; 
    private String description; 
    private int taskPosterID; 


    public TaskObjects(String title, String category, String description, int taskPosterID){ 
    this.title = title; 
    this.category = category; 
    this.description = description; 
    this.taskPosterID = taskPosterID; 


    } 
    //getters and setters 
} 

MainActivity.java

private ArrayList<TaskObjects> tasksArray = new ArrayList<>(); 


@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main_activity); 

for(int i=0; i < 10; i++){ 
TaskObjects task= new TaskObjects("Title " + i, "Category " + i, "Description " + i, i + 10); 
tasksArray.add(task); 
    Log.d("For Loop", "" + i); 
} 

} 
1

您必須使tasksArray爲靜態。否則的TaskObjects每個實例創建一個新的(=空)taskArray

private static ArrayList<TaskObjects> tasksArray = new ArrayList<>(); 
+0

是的,但它不是一個好主意。更好地將實例存儲在外部列表中。 –

+0

取決於你想要做什麼。看例如組合設計模式 – osanger

+0

我仍然會爲此使用非靜態列表。在組合模式中,每個子節點都是特定於其父節點的。所以實例需要每個列表。也就是說,可能會出現需要靜態列表的情況。不過在OP的問題中。 –