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

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

Issue 2665983005: Ntp: use callbacks for partial binding, they can carry more detail. (Closed)
Patch Set: Address review comments from bauerb. Created 3 years, 11 months 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/NewTabPageViewHolder.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageViewHolder.java
index 75248d2985e267326054f9450029fadc051da9b3..add59f29ff51024cf3c9429e75f47fe0e9f26715 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageViewHolder.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageViewHolder.java
@@ -7,12 +7,21 @@ package org.chromium.chrome.browser.ntp.cards;
import android.support.v7.widget.RecyclerView;
import android.view.View;
+import org.chromium.base.Callback;
+
/**
* Holds metadata about an item we want to display on the NTP. An item can be anything that will be
* displayed on the NTP {@link RecyclerView}.
*/
public class NewTabPageViewHolder extends RecyclerView.ViewHolder {
/**
+ * A single instance of {@link UpdateLayoutParamsCallback} that can be reused as it has no
+ * state.
+ */
+ public static final UpdateLayoutParamsCallback UPDATE_LAYOUT_PARAMS_CALLBACK =
+ new UpdateLayoutParamsCallback();
+
+ /**
* Constructs a {@link NewTabPageViewHolder} used to display an part of the NTP (e.g., header,
* article snippet, above-the-fold view, etc.)
*
@@ -39,4 +48,24 @@ public class NewTabPageViewHolder extends RecyclerView.ViewHolder {
protected RecyclerView.LayoutParams getParams() {
return (RecyclerView.LayoutParams) itemView.getLayoutParams();
}
+
+ /**
+ * A callback to perform a partial bind on a {@link NewTabPageViewHolder}.
+ * @see org.chromium.chrome.browser.ntp.cards.InnerNode#notifyItemChanged(int,
+ * PartialBindCallback)
+ *
+ * This empty class is used to strengthen type assertions, as those would be less useful with a
+ * generic class due to type erasure.
+ */
+ public abstract static class PartialBindCallback extends Callback<NewTabPageViewHolder> {}
+
+ /**
+ * Callback to update the layout params for the view holder.
+ */
+ public static class UpdateLayoutParamsCallback extends PartialBindCallback {
+ @Override
+ public void onResult(NewTabPageViewHolder holder) {
+ holder.updateLayoutParams();
+ }
+ }
}

Powered by Google App Engine
This is Rietveld 408576698