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

私のリスト ビューには 1 つの項目 (行) しか表示されません...

私のクラスコードは次のとおりです。

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

何か案は?私はちょうどそれをもう一度学んでいます!ティア!!!

4

3 に答える 3

2

[x] を逃したため、ループの前に配列を初期化する必要があります。次のようになります。

entry_data = new Entry[4];
for(x=0; x<4; x++){
    entry_data[x] = new Entry( pathx, namex, tagx );
}
于 2012-11-16T07:33:25.247 に答える
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 命名規則を尊重してください。

于 2012-11-16T07:33:26.113 に答える
1

動的ケースListの代わりに使用できます。それのサイズ変更可能な配列の実装です。君はArrayArrayList

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

そしてドキュメントで-

各 ArrayList インスタンスには容量があります。容量は、リスト内の要素を格納するために使用される配列のサイズです。常に少なくともリスト サイズと同じ大きさです。要素が ArrayList に追加されると、その容量は自動的に増加します。成長ポリシーの詳細は、要素の追加には一定の償却時間コストがあるという事実以外は指定されていません。

于 2012-11-16T07:34:14.070 に答える