From 29830054ff0d668aa51732aa080fcac113f9895c Mon Sep 17 00:00:00 2001 From: Tim Kilbourn Date: Fri, 4 Apr 2014 16:22:31 -0700 Subject: [PATCH] Add callbacks for actions in details. Change-Id: I5d56e65c45c686fa1b4a686d67f27fb316f9ddf9 --- .../example/android/leanback/BrowseFragment.java | 14 +++++++++++++- .../example/android/leanback/DetailsFragment.java | 13 +++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java index b1b3638e2..00e93f9e6 100644 --- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java +++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseFragment.java @@ -13,11 +13,14 @@ */ package com.example.android.leanback; +import android.content.Intent; import android.os.Bundle; import android.support.v17.leanback.widget.ArrayObjectAdapter; import android.support.v17.leanback.widget.HeaderItem; import android.support.v17.leanback.widget.ListRow; import android.support.v17.leanback.widget.ListRowPresenter; +import android.support.v17.leanback.widget.OnItemClickedListener; +import android.support.v17.leanback.widget.Row; import android.util.Log; public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragment { @@ -38,12 +41,12 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm setBrowseParams(p); setupRows(); + setOnItemClickedListener(new ItemClickedListener()); } private void setupRows() { mRowsAdapter = new ArrayObjectAdapter(new ListRowPresenter()); - for (int i = 0; i < NUM_ROWS; ++i) { ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(new StringPresenter()); listRowAdapter.add("Hello world"); @@ -54,4 +57,13 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm setAdapter(mRowsAdapter); } + + private final class ItemClickedListener implements OnItemClickedListener { + public void onItemClicked(Object item, Row row) { + // TODO: use a fragment transaction instead of launching a new + // activity + Intent intent = new Intent(getActivity(), DetailsActivity.class); + startActivity(intent); + } + } } diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/DetailsFragment.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/DetailsFragment.java index 70a692bf9..c9a85f39f 100644 --- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/DetailsFragment.java +++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/DetailsFragment.java @@ -23,7 +23,9 @@ import android.support.v17.leanback.widget.DetailsOverviewRowPresenter; import android.support.v17.leanback.widget.HeaderItem; import android.support.v17.leanback.widget.ListRow; import android.support.v17.leanback.widget.ListRowPresenter; +import android.support.v17.leanback.widget.OnActionClickedListener; import android.util.Log; +import android.widget.Toast; public class DetailsFragment extends android.support.v17.leanback.app.DetailsFragment { private static final String TAG = "leanback.BrowseFragment"; @@ -41,8 +43,15 @@ public class DetailsFragment extends android.support.v17.leanback.app.DetailsFra private void setupRows() { ClassPresenterSelector ps = new ClassPresenterSelector(); - ps.addClassPresenter(DetailsOverviewRow.class, - new DetailsOverviewRowPresenter(new DetailsDescriptionPresenter())); + DetailsOverviewRowPresenter dorPresenter = + new DetailsOverviewRowPresenter(new DetailsDescriptionPresenter()); + dorPresenter.setOnActionClickedListener(new OnActionClickedListener() { + public void onActionClicked(Action action) { + Toast.makeText(getActivity(), action.toString(), Toast.LENGTH_SHORT).show(); + } + }); + + ps.addClassPresenter(DetailsOverviewRow.class, dorPresenter); ps.addClassPresenter(ListRow.class, new ListRowPresenter()); mRowsAdapter = new ArrayObjectAdapter(ps);