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, updateRowData
protected AsyncDataProvider()
protected AsyncDataProvider(ProvidesKey<T> keyProvider)
keyProvider
- an instance of ProvidesKeypublic void updateRowCount(int size, boolean exact)
AbstractDataProvider
updateRowCount
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)
AbstractDataProvider
updateRowData
in class AbstractDataProvider<T>
start
- the start indexvalues
- the data values