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
--- 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) {