РЕДАКТИРОВАТЬ: Кажется, это ошибка .
Я пытаюсь заставить CellTable работать вместе с AsyncListViewAdapter и SimplePager .Данные отображаются, но когда пейджер должен быть «глухим» (то есть, когда отображаются все существующие данные), он все равно получает щелчки и, что более важно, выводит отображаемые данные.Вместо моих данных отображается индикатор загрузки, и он продолжает загружаться и загружаться ... Очевидно, что ничего не загружается, так как он даже не вызывает обработчик onRangeChanged.
Я просмотрел фрагменты кода в эта тема , но я не вижу никаких подозрений в том, что я делал.
Есть ли какой-нибудь очевидный ответ на ошибку новичка?
Я сжал своиимена переменных, мы надеемся, что это не слишком много.
protected class MyAsyncAdapter
extends AsyncListViewAdapter<DTO> {
@Override
protected void onRangeChanged(ListView<DTO> v) {
/*
* doesn't even get called on [go2start/go2end] click :(
*/
Range r = v.getRange();
fetchData(r.getStart(), r.getLength());
}
}
private void addTable() {
// table:
CellTable<DTO> table = new CellTable<DTO>(10);
table.addColumn(new Column<DTO, String>(new TextCell()) {
@Override
public String getValue(DTO myDto) {
return myDto.getName();
}
}, "Name");
// pager:
SimplePager<DTO> pager = new SimplePager<DTO>(table);
table.setPager(pager);
adapter = new MyAsyncAdapter();
adapter.addView(table);
// does not make any difference:
// adapter.updateDataSize(0, false);
// adapter.updateDataSize(10, true);
VerticalPanel vPanel = new VerticalPanel();
vPanel.add(table);
vPanel.add(pager);
RootLayoutPanel.get().add(vPanel);
}
// success-handler of my fetching AsyncCallback
@Override
public void onSuccess(List<DTO> data) {
// AsyncCallback<List<DTO>> has start field
adapter.updateViewData(start, data.size(), data);
if(data.size() < length)
adapter.updateDataSize(start + data.size(), true);
}
С уважением
J. Záruba