2017-10-18 118 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的问题中。 –