AsyncListViewAdapter + SimplePager, почему неактивный пейджер очищает таблицу? - PullRequest
1 голос
/ 13 июня 2010

РЕДАКТИРОВАТЬ: Кажется, это ошибка .

Я пытаюсь заставить 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

1 Ответ

1 голос
/ 14 июня 2010

Видимо из-за ошибки .

...