Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/NewTabPageAdapter.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/NewTabPageAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/NewTabPageAdapter.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..31bfb3b8b1ecab23ddf7064bdc5e800d905efd8b |
--- /dev/null |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/NewTabPageAdapter.java |
@@ -0,0 +1,105 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.chrome.browser.ntp.snippets; |
+ |
+import android.support.v7.widget.RecyclerView.Adapter; |
+import android.view.ViewGroup; |
+ |
+import org.chromium.chrome.browser.ntp.NewTabPageCardsManager; |
+import org.chromium.chrome.browser.ntp.NewTabPageCardsManager.AboveTheFoldListItem; |
+import org.chromium.chrome.browser.ntp.NewTabPageCardsManager.NewTabPageListItem; |
+import org.chromium.chrome.browser.ntp.NewTabPageLayout; |
+ |
+import java.util.ArrayList; |
+import java.util.List; |
+ |
+/** |
+* A class that represents the adapter backing the NTP RecyclerView. The first element should always |
newt (away)
2016/03/23 05:29:38
Simpler: "The adapter backing the NTP RecyclerView
May
2016/03/23 19:22:57
Acknowledged. Merged this into NewTabPageCardsMana
|
+* be the NTP above contents view, and subsequent elements are the cards to show to the user. |
newt (away)
2016/03/23 05:29:39
What is "NTP above contents view"? Maybe: "the abo
May
2016/03/23 19:22:57
Acknowledged. Merged this into NewTabPageCardsMana
|
+*/ |
+public class NewTabPageAdapter extends Adapter<NewTabPageListItemViewHolder> { |
+ class NewTabPageAboveTheFoldViewHolder extends NewTabPageListItemViewHolder { |
newt (away)
2016/03/23 05:29:38
static
May
2016/03/23 19:22:57
Done.
|
+ public NewTabPageAboveTheFoldViewHolder(NewTabPageLayout view, SnippetsManager manager) { |
+ super(view, manager); |
+ } |
+ |
+ @Override |
+ public void onBindViewHolder(NewTabPageListItem snippetItem) { |
+ // nothing to do |
+ } |
+ } |
+ |
+ private List<NewTabPageListItem> mNewTabPageListItems; |
newt (away)
2016/03/23 05:29:39
might as well make these all final
May
2016/03/23 19:22:57
Done.
|
+ private final SnippetsManager mManager; |
+ private AboveTheFoldListItem mNewTabPageAboveTheFoldItem; |
+ private NewTabPageLayout mAboveTheFoldView; |
+ |
+ /** |
+ * Constructs a SnippetsAdapter object that backs the Snippets RecyclerView on the NTP |
+ * |
+ * @param snippetsManager SnippetsManager object used to open an article |
+ */ |
+ public NewTabPageAdapter(SnippetsManager snippetsManager, NewTabPageLayout aboveTheFoldLayout) { |
+ mManager = snippetsManager; |
+ mNewTabPageListItems = new ArrayList<NewTabPageListItem>(); |
+ mAboveTheFoldView = aboveTheFoldLayout; |
newt (away)
2016/03/23 05:29:38
Be consistent in your variable names. Unless there
May
2016/03/23 19:22:57
Done.
|
+ } |
+ |
+ public void setAboveTheFoldItem(AboveTheFoldListItem item) { |
newt (away)
2016/03/23 05:29:38
Why is this method even needed? We can simply do "
May
2016/03/23 19:22:57
Done.
|
+ mNewTabPageAboveTheFoldItem = item; |
+ if (mNewTabPageListItems.size() == 0) { |
+ mNewTabPageListItems.add(item); |
+ } else { |
+ mNewTabPageListItems.set(0, mNewTabPageAboveTheFoldItem); |
+ } |
+ notifyDataSetChanged(); |
+ } |
+ |
+ /** |
+ * Set the list of items to display in the snippets RecyclerView |
newt (away)
2016/03/23 05:29:39
nit: s/Set/Sets/
May
2016/03/23 19:22:57
Done.
|
+ * |
+ * @param listItems the new list of items to display |
+ */ |
+ public void setSnippetListItems(List<NewTabPageListItem> listItems) { |
+ mNewTabPageListItems.clear(); |
+ mNewTabPageListItems.add(mNewTabPageAboveTheFoldItem); |
+ mNewTabPageListItems.addAll(listItems); |
+ notifyDataSetChanged(); |
+ } |
+ |
+ @Override |
+ public int getItemViewType(int position) { |
+ return mNewTabPageListItems.get(position).getType(); |
+ } |
+ |
+ @Override |
+ public NewTabPageListItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { |
+ if (viewType == NewTabPageCardsManager.SNIPPET_ITEM_ABOVE_THE_FOLD) { |
+ return new NewTabPageAboveTheFoldViewHolder(mAboveTheFoldView, mManager); |
+ } |
+ |
+ if (viewType == NewTabPageCardsManager.SNIPPET_ITEM_TYPE_HEADER) { |
+ return new SnippetHeaderItemViewHolder( |
+ SnippetHeaderItemViewHolder.createView(parent), mManager); |
+ } |
+ |
+ if (viewType == NewTabPageCardsManager.SNIPPET_ITEM_TYPE_SNIPPET) { |
+ return new SnippetCardItemViewHolder( |
+ SnippetCardItemViewHolder.createView(parent), mManager); |
+ } |
+ |
+ return null; |
+ } |
+ |
+ @Override |
+ public void onBindViewHolder(NewTabPageListItemViewHolder holder, final int position) { |
+ holder.onBindViewHolder(mNewTabPageListItems.get(position)); |
+ } |
+ |
+ @Override |
+ public int getItemCount() { |
+ return mNewTabPageListItems.size(); |
+ } |
+} |