2012-11-16 2 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 개 항목 (행)을 제공합니다. 그건 잘 작동합니다.

하지만 루프의 경우, 예를 들어

는 :

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; 
    } 
} 

어떤 아이디어 :

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

내 목록보기 한 항목 (행) 만 ...

내 클래스 코드가 표시됩니다 ? 나는 단지 그것을 다시 배우고있다! 티아!

+0

사용하기 전에 배열을 초기화해야하며 동적 요소를 추가 할 수 있도록 arraylist를 사용하는 것이 좋습니다. –

답변

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

동적 케이스의 경우 Array 대신 List을 사용할 수 있습니다. 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에 추가되면 용량이 자동으로 커집니다. 성장 정책의 세부 사항은 요소에 을 추가 할 때 일정한 상각 된 시간 비용이 있다는 사실을 넘어서 지정되지 않습니다.