Chromium Code Reviews| 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(); |
| + } |
| +} |