Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/InterestsView.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/InterestsView.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/InterestsView.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..03bae03d4e6716dbae1cc449e8116108ac146bb3 |
--- /dev/null |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/InterestsView.java |
@@ -0,0 +1,85 @@ |
+// Copyright 2015 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; |
+ |
+import android.content.Context; |
+import android.graphics.drawable.Drawable; |
+import android.util.AttributeSet; |
+import android.util.LruCache; |
+import android.view.View; |
+import android.view.ViewGroup; |
+import android.widget.ArrayAdapter; |
+import android.widget.FrameLayout; |
+import android.widget.GridView; |
+ |
+import org.chromium.chrome.R; |
+import org.chromium.chrome.browser.ntp.InterestsItemView.DrawingData; |
+import org.chromium.chrome.browser.ntp.InterestsPage.InterestsListener; |
+import org.chromium.chrome.browser.ntp.InterestsService.Interest; |
+ |
+import java.util.List; |
+ |
+/** |
+ * The user's interests, displayed with a two column grid view. |
+ */ |
+public class InterestsView extends FrameLayout { |
+ private InterestsListener mListener; |
+ private GridView mInterestsGrid; |
+ private final InterestsListAdapter mAdapter; |
+ private final LruCache<String, Drawable> mImageCache; |
+ private DrawingData mDrawingData; |
+ |
+ public InterestsView(Context context, AttributeSet attrs) { |
+ super(context, attrs); |
+ mAdapter = new InterestsListAdapter(context); |
+ mImageCache = new LruCache<>(30); |
+ } |
+ |
+ public void setListener(InterestsListener listener) { |
Marc Treib
2015/11/19 12:42:19
Comment that this must be called before setInteres
PEConn
2015/11/20 11:23:41
Done.
|
+ mListener = listener; |
+ } |
+ |
+ public void setInterests(List<Interest> interests) { |
+ mAdapter.addAll(interests); |
+ } |
+ |
+ @Override |
+ protected void onFinishInflate() { |
+ super.onFinishInflate(); |
+ |
+ mInterestsGrid = (GridView) findViewById(R.id.interests_list_view); |
+ mInterestsGrid.setAdapter(mAdapter); |
+ } |
+ |
+ private class InterestsListAdapter extends ArrayAdapter<Interest> { |
+ private Context mContext = null; |
Marc Treib
2015/11/19 12:42:19
Do you need this? |getContext()| should give you t
PEConn
2015/11/20 11:23:40
Done.
|
+ |
+ public InterestsListAdapter(Context context) { |
+ super(context, 0); |
+ mContext = context; |
+ } |
+ |
+ @Override |
+ public View getView(int position, View convertView, ViewGroup parent) { |
+ assert mListener != null; |
+ |
+ if (mDrawingData == null) { |
+ mDrawingData = new InterestsItemView.DrawingData(getContext()); |
Marc Treib
2015/11/19 12:42:19
Can you just initialize this in the InterestsView
PEConn
2015/11/20 11:23:40
Done.
|
+ } |
+ |
+ Interest interest = getItem(position); |
+ |
+ InterestsItemView view; |
+ if (convertView instanceof InterestsItemView) { |
+ view = (InterestsItemView) convertView; |
+ view.reset(interest); |
+ } else { |
+ view = new InterestsItemView(mContext, interest, |
+ mListener, mImageCache, mDrawingData); |
+ } |
+ return view; |
+ } |
+ } |
+} |