我正在研究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”具有正确的索引,因此加载了正确的列表。 但为什么它是空的?调试时,fakeData函数eclipse在ButtonList中显示正确的大小。
希望你能帮助我:)。
答案 0 :(得分:1)
btnDataList.clear();
将清空您引用的列表对象。
对于每个Group索引,您需要一个新列表。喜欢这个
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);