diff --git a/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java b/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
index 28a5588..a78c60d 100644
--- a/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
+++ b/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
@@ -48,6 +48,7 @@
     private final Context mContext;
     private final List<LocaleStore.LocaleInfo> mFeedItemList;
     private final ItemTouchHelper mItemTouchHelper;
+    private RecyclerView mParentView = null;
     private boolean mRemoveMode = false;
     private boolean mDragEnabled = true;
     private NumberFormat mNumberFormatter = NumberFormat.getNumberInstance();
@@ -132,6 +133,7 @@
     }
 
     public void setRecyclerView(RecyclerView rv) {
+        mParentView = rv;
         mItemTouchHelper.attachToRecyclerView(rv);
     }
 
@@ -239,17 +241,46 @@
 
     public void doTheUpdate() {
         int count = mFeedItemList.size();
-        Locale[] newList = new Locale[count];
+        final Locale[] newList = new Locale[count];
 
         for (int i = 0; i < count; i++) {
-            LocaleStore.LocaleInfo li = mFeedItemList.get(i);
+            final LocaleStore.LocaleInfo li = mFeedItemList.get(i);
             newList[i] = li.getLocale();
         }
 
-        LocaleList ll = new LocaleList(newList);
-        LocalePicker.updateLocales(ll);
+        final LocaleList ll = new LocaleList(newList);
+        updateLocalesWhenAnimationStops(ll);
+    }
 
-        mNumberFormatter = NumberFormat.getNumberInstance(Locale.getDefault());
+    private LocaleList mLocalesToSetNext = null;
+    private LocaleList mLocalesSetLast = null;
+
+    public void updateLocalesWhenAnimationStops(final LocaleList localeList) {
+        if (localeList.equals(mLocalesToSetNext)) {
+            return;
+        }
+
+        // This will only update the Settings application to make things feel more responsive,
+        // the system will be updated later, when animation stopped.
+        LocaleList.setDefault(localeList);
+
+        mLocalesToSetNext = localeList;
+        final RecyclerView.ItemAnimator itemAnimator = mParentView.getItemAnimator();
+        itemAnimator.isRunning(new RecyclerView.ItemAnimator.ItemAnimatorFinishedListener() {
+            @Override
+            public void onAnimationsFinished() {
+                if (mLocalesToSetNext == null || mLocalesToSetNext.equals(mLocalesSetLast)) {
+                    // All animations finished, but the locale list did not change
+                    return;
+                }
+
+                LocalePicker.updateLocales(mLocalesToSetNext);
+                mLocalesSetLast = mLocalesToSetNext;
+                mLocalesToSetNext = null;
+
+                mNumberFormatter = NumberFormat.getNumberInstance(Locale.getDefault());
+            }
+        });
     }
 
     private void setDragEnabled(boolean enabled) {
