循环动态数据

时间:2012-11-16 07:30:24

标签: java android class loops

我有这段代码:

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 !!!

3 个答案:

答案 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代替ArrayArrayList是可调整大小的数组实现。你

List<Entry> entry_data  = new ArrayList<Entry>();
for(x=0; x<4; x++){
    entry_data.add(new Entry( pathx, namex, tagx ));
}

并在docs -

  

每个ArrayList实例都有一个容量。容量是阵列的大小   用于存储列表中的元素。它总是至少和它一样大   列表大小。当元素添加到ArrayList时,其容量会自动增加。   除了添加事实之外,未指定增长策略的详细信息   元素具有不变的摊销时间成本。