2012-11-16 48 views
1

我有這樣的代碼:以上循環動態數據

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

該數組必須在循環之前定義。每次迭代應該只有一個元素添加到陣列中:

entryData = new Entry[4]; 
for (int i = 0; i < 4; i++){ 
    entryData[i] = new Entry(pathx, namex, tagx); 
} 

如果你不事先知道數組的大小,然後用列表來代替,該動態增長:

List<Entry> entryData = new ArrayList<Entry>(); 
// ... 
for (int i = 0; i < someDynamicValue; i++) { 
    entryData.add(new Entry(pathx, namex, tagx)); 
} 

而且請尊重Java命名約定。

2

你錯過了[x],你應該在循環之前初始化數組。它應該看起來像這樣:

entry_data = new Entry[4]; 
for(x=0; x<4; x++){ 
    entry_data[x] = new Entry(pathx, namex, tagx); 
} 
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,其容量會自動增長。 增長政策的細節並未詳細說明,因爲添加 元素具有不變的攤銷時間成本。