2013-11-26 43 views
1

我正在使用GWT。按鈕列表清單是空的

由於我有一個SQL數據庫和我的查詢結果集大小是未知的我認爲這將有助於使用列表。

其實我有一個按鈕列表和第二個列表按鈕列表。

原因是因爲我有一個存儲組的表和一個存儲實際數據的表。結果中的兩個都應該是按鈕。

通過單擊組按鈕,我的佈局充滿了組按鈕之間的數據按鈕。

現在我的數據庫連接沒有準備好使用,所以我寫了一個函數,用假數據填充我的列表。同樣的組。

public void fakeGroupData() { 
// Group index 0 
    btnGroupList.add(new Button("Group a")); 
// Group index 1 
    btnGroupList.add(new Button("Group b")); 
    ... 
} 

public void fakeData() { 

// Group index 0 
    btnDataList.add(new Button("Data 1.1")); 
    btnDataList.add(new Button("Data 1.2")); 
    btnDataList.add(new Button("Data 1.3")); 
    btnDataListList.add(btnDataList); 
    btnDataList.clear(); 

// Group index 1 
    btnDataList.add(... 
} 

聲明看起來像這樣

List<Button> btnGroupList = new ArrayList<Button>(); 
List<List<Button>> btnDataListList = new ArrayList<List<Button>>(); 
List<Button> btnDataList = new ArrayList<Button>(); 

當試圖讓ListList的ButtonList出現錯誤。

int grpIndex = Panel.getWidgetIndex(grpBtn); 
// grpBtn is equal to (Button)event.getSource() called by btnGroup ClickHandler 
    btnDataList.clear() 
    btnDataList = btnDataListList.get(grpIndex); 
    int loopEnd = btnDataList.size() - 1; 

    for (int i = 0; i<=loopEnd; i++) {... 

「loopEnd」包含「-1」,並沒有任何反應:(我想在這裏調試,一切似乎確定。 「grpIndex」有正確的索引,以便在右邊的列表被加載。 但爲什麼它是空的?當debuggin的fakeData功能日食顯示了ButtonList大小合適。

希望你能幫助我:)

+0

代替填充假數據,怎麼樣,如果你這樣做,當你知道數據庫連接已準備就緒?閱讀關於多線程,併發,同步,觀察者模式 – gerrytan

回答

1

btnDataList.clear();將清空你的引用列表對象。

對於每個組索引,您需要一個新列表。做這樣的

btnDataList = new ArrayList<Button>();代替btnDataList.clear();

// Group index 0 
btnDataList.add(new Button("Data 1.1")); 
btnDataList.add(new Button("Data 1.2")); 
btnDataListList.add(btnDataList); 

// Group index 1 
btnDataList = new ArrayList<Button>(); 
btnDataList.add(new Button("Data 2.1")); 
btnDataList.add(new Button("Data 2.2")); 
btnDataListList.add(btnDataList); 
+0

這是我的朋友非常有意義。現在我明白了這個問題。在btnDataList上執行.clear()也會清除btnDataListList,這就是爲什麼大小爲0.非常感謝你:)這讓我在最後一個小時發瘋了! – blackWorX

+0

@blackWorX歡迎您。 – Prabhakaran