Bug 1299224 - Pre: remove unnecessary LoaderManager reference from StreamAdapter r?sebastian draft
authorAndrzej Hunt <ahunt@mozilla.com>
Wed, 31 Aug 2016 12:52:40 -0700
changeset 408181 2be0c6bab4f18f933fb536fb1be6b39aed0fdb25
parent 408118 51afefd5f63d13b28b304c52301818cfad7d229b
child 408182 c70b6113bfef8d9137224b190b6bc65e2e2ea5e8
push id28160
push userahunt@mozilla.com
push dateWed, 31 Aug 2016 20:06:30 +0000
reviewerssebastian
bugs1299224
milestone51.0a1
Bug 1299224 - Pre: remove unnecessary LoaderManager reference from StreamAdapter r?sebastian I think originally I wanted to fiddle the Loaders from the Adapter, but we don't do that so this code is unused/unnecessary. We should also make sure we only ever create one adapter, which we can do by initalising it in the constructor. MozReview-Commit-ID: MCNBXll1ZX
mobile/android/base/java/org/mozilla/gecko/home/activitystream/ActivityStream.java
mobile/android/base/java/org/mozilla/gecko/home/activitystream/StreamRecyclerAdapter.java
--- a/mobile/android/base/java/org/mozilla/gecko/home/activitystream/ActivityStream.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/activitystream/ActivityStream.java
@@ -2,65 +2,63 @@
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
  package org.mozilla.gecko.home.activitystream;
 
 import android.content.Context;
 import android.database.Cursor;
 import android.os.Bundle;
-import android.support.v4.app.FragmentManager;
 import android.support.v4.app.LoaderManager;
 import android.support.v4.content.Loader;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.util.AttributeSet;
 import android.widget.FrameLayout;
 
 import org.mozilla.gecko.GeckoProfile;
 import org.mozilla.gecko.R;
-import org.mozilla.gecko.animation.PropertyAnimator;
-import org.mozilla.gecko.home.HomeBanner;
-import org.mozilla.gecko.home.HomeFragment;
-import org.mozilla.gecko.home.HomeScreen;
 import org.mozilla.gecko.home.SimpleCursorLoader;
 import org.mozilla.gecko.home.activitystream.topsites.TopSitesPagerAdapter;
 
 public class ActivityStream extends FrameLayout {
-    private StreamRecyclerAdapter adapter;
+    private final StreamRecyclerAdapter adapter;
 
     private static final int LOADER_ID_HIGHLIGHTS = 0;
     private static final int LOADER_ID_TOPSITES = 1;
 
     public ActivityStream(Context context, AttributeSet attrs) {
         super(context, attrs);
 
         inflate(context, R.layout.as_content, this);
+
+        adapter = new StreamRecyclerAdapter();
+    }
+
+    @Override
+    protected void onAttachedToWindow() {
+        super.onAttachedToWindow();
+
+        RecyclerView rv = (RecyclerView) findViewById(R.id.activity_stream_main_recyclerview);
+
+        rv.setAdapter(adapter);
+        rv.setLayoutManager(new LinearLayoutManager(getContext()));
+        rv.setHasFixedSize(true);
     }
 
     public void load(LoaderManager lm) {
-        // Signal to load data from storage as needed, compare with HomePager
-        RecyclerView rv = (RecyclerView) findViewById(R.id.activity_stream_main_recyclerview);
+        CursorLoaderCallbacks callbacks = new CursorLoaderCallbacks();
 
-        // TODO: we need to retrieve BrowserApp and pass it in as onUrlOpenListener. That will
-        // be simpler once we're a HomeFragment, but isn't so simple while we're still a View.
-        adapter = new StreamRecyclerAdapter(lm, null);
-        rv.setAdapter(adapter);
-        rv.setLayoutManager(new LinearLayoutManager(getContext()));
-        rv.setHasFixedSize(true);
-
-        CursorLoaderCallbacks callbacks = new CursorLoaderCallbacks();
         lm.initLoader(LOADER_ID_HIGHLIGHTS, null, callbacks);
         lm.initLoader(LOADER_ID_TOPSITES, null, callbacks);
     }
 
     public void unload() {
         adapter.swapHighlightsCursor(null);
         adapter.swapTopSitesCursor(null);
-        // Signal to clear data that has been loaded, compare with HomePager
     }
 
     /**
      * This is a temporary cursor loader. We'll probably need a completely new query for AS,
      * at that time we can switch to the new CursorLoader, as opposed to using our outdated
      * SimpleCursorLoader.
      */
     private static class HistoryLoader extends SimpleCursorLoader {
--- a/mobile/android/base/java/org/mozilla/gecko/home/activitystream/StreamRecyclerAdapter.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/activitystream/StreamRecyclerAdapter.java
@@ -17,21 +17,19 @@ import org.mozilla.gecko.home.activityst
 import org.mozilla.gecko.home.activitystream.StreamItem.TopPanel;
 
 import java.lang.ref.WeakReference;
 
 public class StreamRecyclerAdapter extends RecyclerView.Adapter<StreamItem> {
     private Cursor highlightsCursor;
     private Cursor topSitesCursor;
 
-    private final WeakReference<LoaderManager> loaderManagerWeakReference;
     private final HomePager.OnUrlOpenListener onUrlOpenListener;
 
-    StreamRecyclerAdapter(LoaderManager lm, HomePager.OnUrlOpenListener onUrlOpenListener) {
-        loaderManagerWeakReference = new WeakReference<>(lm);
+    StreamRecyclerAdapter(HomePager.OnUrlOpenListener onUrlOpenListener) {
         this.onUrlOpenListener = onUrlOpenListener;
     }
 
     @Override
     public int getItemViewType(int position) {
         if (position == 0) {
             return TopPanel.LAYOUT_ID;
         } else if (position == getItemCount() - 1) {