2013-11-26 3 views
1

Я работаю с GWT.Список пустых кнопок пуст

Поскольку у меня есть SQL db и мои запросы, размер набора результатов неизвестен. Я думал, что имеет смысл использовать списки.

На самом деле у меня есть один список кнопок и второй список списка кнопок.

Причина в том, что у меня есть одна таблица, в которой хранятся группы и хранится фактическая информация. Оба из них в результате должны быть кнопками.

Нажав на кнопку группы, мой макет заполняется кнопками данных между групповыми кнопками.

Теперь мое соединение db не готово к использованию, поэтому я написал функцию, которая заполняет мои списки поддельными данными. То же самое для групп.

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

При попытке получить ButtonList в ListList появляется ошибка.

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++) {... 

«Конец цикла» содержит «-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

ЭТО мой друг имеет очень большой смысл. Теперь я понял проблему. Выполнение .clear() на btnDataList также очищает btnDataListList, и поэтому размер равен 0. Большое спасибо :) это заставило меня сходить с ума в последний час! – blackWorX

+0

@blackWorX добро пожаловать. – Prabhakaran

Смежные вопросы