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

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: Changes from dgn@ and dfalcantara@ reviews 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..da379763aac45652d550a98a73658cef2557e42d 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,34 @@ public abstract class DateDividedAdapter extends Adapter<RecyclerView.ViewHolder
return mPosition;
}
+ /**
+ * @param isFirst Whether this item is the first in its group.
+ */
+ public final void setIsFirstInGroup(boolean isFirst) {
+ mIsFirstInGroup = isFirst;
+ }
+
+ /**
+ * @param isLast Whether this item is the last in its group.
+ */
+ public final void setIsLastInGroup(boolean isLast) {
+ 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 +102,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 +113,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 +182,12 @@ 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.setIsFirstInGroup(i == 0);
+ item.setIsLastInGroup(i == mItems.size() - 1);
}
}
@@ -244,13 +284,22 @@ public abstract class DateDividedAdapter extends Adapter<RecyclerView.ViewHolder
/**
* Creates a {@link BasicViewHolder} in the given view parent for the footer.
- * @see #onCreateViewHolder(ViewGroup, int)
+ * See {@link #onCreateViewHolder(ViewGroup, int)}.
*/
protected BasicViewHolder createFooter(ViewGroup parent) {
return null;
}
/**
+ * Creates a {@link DateViewHolder} in the given view parent.
+ * @see #onCreateViewHolder(ViewGroup, int)
+ */
+ 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 +464,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