diff --git a/mobile/android/base/java/org/mozilla/gecko/home/activitystream/ActivityStream.java b/mobile/android/base/java/org/mozilla/gecko/home/activitystream/ActivityStream.java index eedb410280bf..6426d59ead3a 100644 --- a/mobile/android/base/java/org/mozilla/gecko/home/activitystream/ActivityStream.java +++ b/mobile/android/base/java/org/mozilla/gecko/home/activitystream/ActivityStream.java @@ -12,6 +12,8 @@ import android.support.v4.content.Loader; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.AttributeSet; +import android.util.Log; +import android.view.View; import android.widget.FrameLayout; import org.mozilla.gecko.GeckoProfile; @@ -20,6 +22,7 @@ import org.mozilla.gecko.db.BrowserDB; import org.mozilla.gecko.home.HomePager; import org.mozilla.gecko.home.SimpleCursorLoader; import org.mozilla.gecko.home.activitystream.topsites.TopSitesPagerAdapter; +import org.mozilla.gecko.widget.RecyclerViewClickSupport; public class ActivityStream extends FrameLayout { private final StreamRecyclerAdapter adapter; @@ -39,6 +42,9 @@ public class ActivityStream extends FrameLayout { rv.setAdapter(adapter); rv.setLayoutManager(new LinearLayoutManager(getContext())); rv.setHasFixedSize(true); + + RecyclerViewClickSupport.addTo(rv) + .setOnItemClickListener(adapter); } void setOnUrlOpenListener(HomePager.OnUrlOpenListener listener) { diff --git a/mobile/android/base/java/org/mozilla/gecko/home/activitystream/StreamRecyclerAdapter.java b/mobile/android/base/java/org/mozilla/gecko/home/activitystream/StreamRecyclerAdapter.java index 856e2bfbfee7..7a561420cf2a 100644 --- a/mobile/android/base/java/org/mozilla/gecko/home/activitystream/StreamRecyclerAdapter.java +++ b/mobile/android/base/java/org/mozilla/gecko/home/activitystream/StreamRecyclerAdapter.java @@ -7,14 +7,19 @@ package org.mozilla.gecko.home.activitystream; import android.database.Cursor; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; +import android.view.View; import android.view.ViewGroup; +import org.mozilla.gecko.db.BrowserContract; import org.mozilla.gecko.home.HomePager; import org.mozilla.gecko.home.activitystream.StreamItem.BottomPanel; import org.mozilla.gecko.home.activitystream.StreamItem.HighlightItem; import org.mozilla.gecko.home.activitystream.StreamItem.TopPanel; +import org.mozilla.gecko.widget.RecyclerViewClickSupport; -public class StreamRecyclerAdapter extends RecyclerView.Adapter { +import java.util.EnumSet; + +public class StreamRecyclerAdapter extends RecyclerView.Adapter implements RecyclerViewClickSupport.OnItemClickListener { private Cursor highlightsCursor; private Cursor topSitesCursor; @@ -74,6 +79,22 @@ public class StreamRecyclerAdapter extends RecyclerView.Adapter { } } + @Override + public void onItemClicked(RecyclerView recyclerView, int position, View v) { + if (position < 1) { + // The header contains top sites and has its own click handling. + return; + } + + highlightsCursor.moveToPosition( + translatePositionToCursor(position)); + + final String url = highlightsCursor.getString( + highlightsCursor.getColumnIndexOrThrow(BrowserContract.Combined.URL)); + + onUrlOpenListener.onUrlOpen(url, EnumSet.of(HomePager.OnUrlOpenListener.Flags.ALLOW_SWITCH_TO_TAB)); + } + @Override public int getItemCount() { final int highlightsCount;