diff --git a/user/src/com/google/gwt/view/client/ListDataProvider.java b/user/src/com/google/gwt/view/client/ListDataProvider.java
index c8bfee8..6409c46 100644
--- a/user/src/com/google/gwt/view/client/ListDataProvider.java
+++ b/user/src/com/google/gwt/view/client/ListDataProvider.java
@@ -15,8 +15,8 @@
  */
 package com.google.gwt.view.client;
 
-import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -153,7 +153,7 @@
      * so that we don't spam the displays. This also allows users to clear and
      * replace all of the data without forcing the display back to page 0.
      */
-    private Command flushCommand = new Command() {
+    private ScheduledCommand flushCommand = new ScheduledCommand() {
       public void execute() {
         flushPending = false;
         if (flushCancelled) {
@@ -394,7 +394,7 @@
       flushCancelled = false;
       if (!flushPending) {
         flushPending = true;
-        DeferredCommand.addCommand(flushCommand);
+        Scheduler.get().scheduleFinally(flushCommand);
       }
     }
 
@@ -407,6 +407,11 @@
         flushCancelled = true;
       }
 
+      // Early exit if this list has been replaced in the data provider.
+      if (listWrapper != this) {
+        return;
+      }
+
       int newSize = list.size();
       if (curSize != newSize) {
         curSize = newSize;
diff --git a/user/test/com/google/gwt/view/client/ListDataProviderTest.java b/user/test/com/google/gwt/view/client/ListDataProviderTest.java
index 86a5ed9..cc6b377 100644
--- a/user/test/com/google/gwt/view/client/ListDataProviderTest.java
+++ b/user/test/com/google/gwt/view/client/ListDataProviderTest.java
@@ -15,6 +15,9 @@
  */
 package com.google.gwt.view.client;
 
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
+
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -431,13 +434,15 @@
 
   public void testSetList() {
     ListDataProvider<String> provider = createListDataProvider(10);
-    MockHasData<String> display = new MockHasData<String>();
+    final MockHasData<String> display = new MockHasData<String>();
     display.setVisibleRange(0, 15);
     provider.addDataDisplay(display);
     provider.flush();
     display.clearLastRowDataAndRange();
-    assertEquals("test 0", provider.getList().get(0));
+    List<String> oldList = provider.getList();
+    assertEquals("test 0", oldList.get(0));
 
+    // Replace the list.
     List<String> replace = new ArrayList<String>();
     replace.add("helloworld");
     provider.setList(replace);
@@ -445,6 +450,17 @@
     assertEquals(1, display.getRowCount());
     assertEquals(replace, display.getLastRowData());
     assertEquals(new Range(0, 1), display.getLastRowDataRange());
+    display.clearLastRowDataAndRange();
+
+    // Verify that the old list doesn't trigger updates in the display.
+    oldList.set(0, "newValue");
+    delayTestFinish(2000);
+    Scheduler.get().scheduleDeferred(new ScheduledCommand() {
+      public void execute() {
+        assertNull(display.getLastRowData());
+        finishTest();
+      }
+    });
   }
 
   public void testSetListEmpty() {
