com.google.gwt.view.client

## Class AsyncDataProvider<T>

- java.lang.Object
- - com.google.gwt.view.client.AbstractDataProvider<T>
  - - com.google.gwt.view.client.AsyncDataProvider<T>

- Type Parameters:
    `T` - the data type of records in the list
  All Implemented Interfaces:
    ProvidesKey<T>

      public abstract class AsyncDataProvider<T>
      extends AbstractDataProvider<T>

  An implementation of `AbstractDataProvider` that allows the data to be modified.

  ### Example

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

- - ### Constructor Summary

    Constructors
    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.

  - ### Method Summary

    Methods
    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.

    - ### Methods inherited from class com.google.gwt.view.client.AbstractDataProvider

      `addDataDisplay, getDataDisplays, getKey, getKeyProvider, getRanges, onRangeChanged, removeDataDisplay, updateRowData`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### AsyncDataProvider

          protected AsyncDataProvider()

      Constructs an AsyncDataProvider without a key provider.

    - #### AsyncDataProvider

          protected AsyncDataProvider(ProvidesKey<T> keyProvider)

      Constructs an AsyncDataProvider with the given key provider.
      Parameters:
        `keyProvider` - an instance of ProvidesKey, or null if the record object should act as its own key

  - ### Method Detail

    - #### updateRowCount

          public void updateRowCount(int size,
                            boolean exact)

      Description copied from class: `AbstractDataProvider`
      Inform the displays of the total number of items that are available.
      Overrides:
        `updateRowCount` in class `AbstractDataProvider<T>`
      Parameters:
        `size` - the new total row count
        `exact` - true if the count is exact, false if it is an estimate

    - #### updateRowData

          public void updateRowData(int start,
                           java.util.List<T> values)

      Description copied from class: `AbstractDataProvider`
      Inform the displays of the new data.
      Overrides:
        `updateRowData` in class `AbstractDataProvider<T>`
      Parameters:
        `start` - the start index
        `values` - the data values