T - the data type of records in the listpublic abstract class AsyncDataProvider<T> extends AbstractDataProvider<T>
AbstractDataProvider that allows the data to be
 modified.
 
public class AsyncDataProviderExample implements EntryPoint {
  /**
   * A custom {@link AsyncDataProvider}.
   */
  private static class MyDataProvider extends AsyncDataProvider<String> {
    /**
     * {@link #onRangeChanged(HasData)} is called when the table requests a new
     * range of data. You can push data back to the displays using
     * {@link #updateRowData(int, List)}.
     */
    @Override
    protected void onRangeChanged(HasData<String> display) {
      // Get the new range.
      final Range range = display.getVisibleRange();
      /*
       * Query the data asynchronously. If you are using a database, you can
       * make an RPC call here. We'll use a Timer to simulate a delay.
       */
      new Timer() {
        @Override
        public void run() {
          // We are creating fake data. Normally, the data will come from a
          // server.
          int start = range.getStart();
          int length = range.getLength();
          List<String> newData = new ArrayList<String>();
          for (int i = start; i < start + length; i++) {
            newData.add("Item " + i);
          }
          // Push the data to the displays. AsyncDataProvider will only update
          // displays that are within range of the data.
          updateRowData(start, newData);
        }
      }.schedule(3000);
    }
  }
  public void onModuleLoad() {
    // Create a CellList.
    CellList<String> cellList = new CellList<String>(new TextCell());
    // Create a data provider.
    MyDataProvider dataProvider = new MyDataProvider();
    // Add the cellList to the dataProvider.
    dataProvider.addDataDisplay(cellList);
    // Create paging controls.
    SimplePager pager = new SimplePager();
    pager.setDisplay(cellList);
    // Add the widgets to the root panel.
    VerticalPanel vPanel = new VerticalPanel();
    vPanel.add(pager);
    vPanel.add(cellList);
    RootPanel.get().add(vPanel);
  }
}
| Modifier | Constructor and Description | 
|---|---|
| protected  | AsyncDataProvider()Constructs an AsyncDataProvider without a key provider. | 
| protected  | AsyncDataProvider(ProvidesKey<T> keyProvider)Constructs an AsyncDataProvider with the given key provider. | 
| Modifier and Type | Method and Description | 
|---|---|
| void | updateRowCount(int size,
              boolean exact)Inform the displays of the total number of items that are available. | 
| void | updateRowData(int start,
             java.util.List<T> values)Inform the displays of the new data. | 
addDataDisplay, getDataDisplays, getKey, getKeyProvider, getRanges, onRangeChanged, removeDataDisplay, updateRowDataprotected AsyncDataProvider()
protected AsyncDataProvider(ProvidesKey<T> keyProvider)
keyProvider - an instance of ProvidesKeypublic void updateRowCount(int size,
                           boolean exact)
AbstractDataProviderupdateRowCount in class AbstractDataProvider<T>size - the new total row countexact - true if the count is exact, false if it is an estimatepublic void updateRowData(int start,
                          java.util.List<T> values)
AbstractDataProviderupdateRowData in class AbstractDataProvider<T>start - the start indexvalues - the data values