我有这段代码:
entryData = new Entry[] {
new Entry( path1, name1, tag1 ),
new Entry( path2, name2, tag2 ),
new Entry( path3, name3, tag3 ),
new Entry( path4, name4, tag4 )
};
上面的数据为我的列表视图提供了4个项目(行)。这很好。
但是如果我循环,例如:
for(x=0; x<4; x++){
entryData = new Entry[] { new Entry( pathx, namex, tagx ) };
}
我的列表视图仅显示一个项目(行)
我的班级代码是:
public class Entry {
public String icon;
public String title;
public String tag;
public Entry() {
super();
}
public Entry(String icon, String title, String tag) {
super();
this.icon = icon;
this.title = title;
this.tag = tag;
}
}
有什么想法吗?我刚刚再次学习它! TIA !!!
答案 0 :(得分:2)
你错过了[x],你应该在循环之前初始化数组。它应该是这样的:
entry_data = new Entry[4];
for(x=0; x<4; x++){
entry_data[x] = new Entry( pathx, namex, tagx );
}
答案 1 :(得分:2)
必须在循环之前定义数组。每次迭代都应该只向数组中添加一个元素:
entryData = new Entry[4];
for (int i = 0; i < 4; i++){
entryData[i] = new Entry(pathx, namex, tagx);
}
如果您事先不知道数组的大小,那么请使用List,它会动态增长:
List<Entry> entryData = new ArrayList<Entry>();
// ...
for (int i = 0; i < someDynamicValue; i++) {
entryData.add(new Entry(pathx, namex, tagx));
}
另外,请尊重Java命名约定。
答案 2 :(得分:1)
对于动态案例,您可以使用List
代替Array
。 ArrayList
是可调整大小的数组实现。你
List<Entry> entry_data = new ArrayList<Entry>();
for(x=0; x<4; x++){
entry_data.add(new Entry( pathx, namex, tagx ));
}
并在docs -
每个ArrayList实例都有一个容量。容量是阵列的大小 用于存储列表中的元素。它总是至少和它一样大 列表大小。当元素添加到ArrayList时,其容量会自动增加。 除了添加事实之外,未指定增长策略的详细信息 元素具有不变的摊销时间成本。