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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/widget/DateDividedAdapter.java

Issue 2654193002: [Android History] List item shadows and width constrained styling (Closed)
Patch Set: Fix some styling for supervised users 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/widget/DateDividedAdapter.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/widget/DateDividedAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/widget/DateDividedAdapter.java
index ee707031eb1d11075098289c351d2c33d21edbf3..67752034b1dbaa8aa408c7a99f2d626c0f96c496 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/widget/DateDividedAdapter.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/widget/DateDividedAdapter.java
@@ -49,6 +49,9 @@ public abstract class DateDividedAdapter extends Adapter<RecyclerView.ViewHolder
/** Position of the TimedItem in the list, or {@link #INVALID_POSITION} if not shown. */
private int mPosition = INVALID_POSITION;
+ private boolean mIsFirstInGroup;
+ private boolean mIsLastInGroup;
+
/** See {@link #mPosition}. */
private final void setPosition(int position) {
mPosition = position;
@@ -59,6 +62,29 @@ public abstract class DateDividedAdapter extends Adapter<RecyclerView.ViewHolder
return mPosition;
}
+ /**
+ * @param isFirst Whether this item is the first in its group.
+ * @param isLast Whether this item is the last in its group.
+ */
+ public final void setIsFirstOrLastInGroup(boolean isFirst, boolean isLast) {
gone 2017/01/27 18:48:52 bit of a mouthful... maybe just add a dedicated se
Theresa 2017/01/27 23:34:45 Done.
+ mIsFirstInGroup = isFirst;
+ mIsLastInGroup = isLast;
+ }
+
+ /**
+ * @return Whether this item is the first in its group.
+ */
+ public boolean isFirstInGroup() {
+ return mIsFirstInGroup;
+ }
+
+ /**
+ * @return Whether this item is the last in its group.
+ */
+ public boolean isLastInGroup() {
+ return mIsLastInGroup;
+ }
+
/** @return The timestamp for this item. */
public abstract long getTimestamp();
@@ -71,7 +97,10 @@ public abstract class DateDividedAdapter extends Adapter<RecyclerView.ViewHolder
public abstract long getStableId();
}
- private static class DateViewHolder extends RecyclerView.ViewHolder {
+ /**
+ * A {@link RecyclerView.ViewHolder} that displays a date header.
+ */
+ public static class DateViewHolder extends RecyclerView.ViewHolder {
private TextView mTextView;
public DateViewHolder(View view) {
@@ -79,6 +108,9 @@ public abstract class DateDividedAdapter extends Adapter<RecyclerView.ViewHolder
if (view instanceof TextView) mTextView = (TextView) view;
}
+ /**
+ * @param date The date that this DateViewHolder should display.
+ */
public void setDate(Date date) {
// Calender.getInstance() may take long time to run, so Calendar object should be reused
// as much as possible.
@@ -145,9 +177,11 @@ public abstract class DateDividedAdapter extends Adapter<RecyclerView.ViewHolder
mIndex = index;
sortIfNeeded();
- for (TimedItem item : mItems) {
+ for (int i = 0; i < mItems.size(); i++) {
index += 1;
+ TimedItem item = mItems.get(i);
item.setPosition(index);
+ item.setIsFirstOrLastInGroup(i == 0, i == mItems.size() - 1);
}
}
@@ -251,6 +285,15 @@ public abstract class DateDividedAdapter extends Adapter<RecyclerView.ViewHolder
}
/**
+ * Creates a {@link DateViewHolder} in the given view parent.
+ * @see #onCreateViewHolder(ViewGroup, int)
gone 2017/01/27 18:48:52 See {@link #onCreateViewHolder(ViewGroup, int)}.
Theresa 2017/01/27 23:34:45 Done.
+ */
+ protected DateViewHolder createDateViewHolder(ViewGroup parent) {
+ return new DateViewHolder(LayoutInflater.from(parent.getContext()).inflate(
+ getTimedItemViewResId(), parent, false));
+ }
+
+ /**
* Binds the {@link ViewHolder} with the given {@link TimedItem}.
* @see #onBindViewHolder(ViewHolder, int)
*/
@@ -415,8 +458,7 @@ public abstract class DateDividedAdapter extends Adapter<RecyclerView.ViewHolder
@Override
public final RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_DATE) {
- return new DateViewHolder(LayoutInflater.from(parent.getContext()).inflate(
- getTimedItemViewResId(), parent, false));
+ return createDateViewHolder(parent);
} else if (viewType == TYPE_NORMAL) {
return createViewHolder(parent);
} else if (viewType == TYPE_HEADER) {

Powered by Google App Engine
This is Rietveld 408576698