Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(415)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/CardViewHolder.java

Issue 2502993002: 📰 Fix crash when data changes while items are swiped (Closed)
Patch Set: _ Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/CardViewHolder.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/CardViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/CardViewHolder.java
index 36a89e4a1677e94962ef1f4c953ae261c1e391b8..565c0fdb149a0dd1ad6e0da6a1cc2699d78014cd 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/CardViewHolder.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/CardViewHolder.java
@@ -12,6 +12,7 @@
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.View;
+import android.view.View.OnAttachStateChangeListener;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.animation.Interpolator;
@@ -129,6 +130,21 @@ protected void onBindViewHolder() {
itemView.setAlpha(1f);
itemView.setTranslationX(0f);
+ itemView.addOnAttachStateChangeListener(new OnAttachStateChangeListener() {
+ @Override
+ public void onViewAttachedToWindow(View view) {}
+
+ @Override
+ public void onViewDetachedFromWindow(View view) {
+ // In some cases a view can be removed while a user is interacting with it, without
+ // calling ItemTouchHelper.Callback#clearView(), which we rely on for bottomSpacer
+ // calculations. So we call this explicitly here instead.
+ // See https://crbug.com/664466, b/32900699
+ mRecyclerView.onItemDismissFinished(mRecyclerView.findContainingViewHolder(view));
+ itemView.removeOnAttachStateChangeListener(this);
dgn 2016/11/16 15:12:34 There is another thing that is wrong with this: -
+ }
+ });
+
// Make sure we use the right background.
updateLayoutParams();
}

Powered by Google App Engine
This is Rietveld 408576698