diff --git a/samples/SupportLeanbackDemos/AndroidManifest.xml b/samples/SupportLeanbackDemos/AndroidManifest.xml index d02eefeaf..6db5aabc0 100644 --- a/samples/SupportLeanbackDemos/AndroidManifest.xml +++ b/samples/SupportLeanbackDemos/AndroidManifest.xml @@ -4,7 +4,7 @@ android:versionCode="1" android:versionName="1.0"> - + { - PageFragmentAdapterImpl() { + public PageFragmentAdapterImpl(SampleFragment fragment) { + super(fragment); setScalingEnabled(true); } - - @Override - public Fragment getFragment() { - if (mFragment == null) { - mFragment = new SampleFragment(); - } - return mFragment; - } } - private static class GridPageFragmentAdapterImpl extends RowsFragmentAdapter { + public static class SampleRowsFragment extends RowsFragment { final CardPresenter mCardPresenter = new CardPresenter(); final CardPresenter mCardPresenter2 = new CardPresenter(R.style.MyImageCardViewTheme); - private RowsFragment mFragment; - GridPageFragmentAdapterImpl() { - setScalingEnabled(true); - } - - protected Fragment createFragment() { - if (mFragment == null) { - mFragment = new RowsFragment(); - ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ListRowPresenter()); - for (int i = 0; i < 4; i++) { - ListRow row = new ListRow(new HeaderItem("Row " + i), createListRowAdapter(i)); - adapter.add(row); - } - mFragment.setAdapter(adapter); + public SampleRowsFragment() { + ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ListRowPresenter()); + for (int i = 0; i < 4; i++) { + ListRow row = new ListRow(new HeaderItem("Row " + i), createListRowAdapter(i)); + adapter.add(row); } - return mFragment; + setAdapter(adapter); + + setOnItemViewClickedListener(new OnItemViewClickedListener() { + @Override + public void onItemClicked( + Presenter.ViewHolder itemViewHolder, + Object item, + RowPresenter.ViewHolder rowViewHolder, Row row) { + Intent intent = new Intent( + itemViewHolder.view.getContext(), GuidedStepActivity.class); + startActivity(intent); + } + }); } private ArrayObjectAdapter createListRowAdapter(int i) { @@ -294,12 +288,31 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm } } - private static class SampleFragment extends Fragment { + public static class SampleFragment extends Fragment implements Adaptable { + + final PageFragmentAdapterImpl mMainFragmentAdapter = new PageFragmentAdapterImpl(this); @Override public View onCreateView( - LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.page_fragment, container, false); + final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.page_fragment, container, false); + view.findViewById(R.id.tv1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(inflater.getContext(), GuidedStepActivity.class); + startActivity(intent); + } + }); + + return view; + } + + @Override + public PageFragmentAdapterImpl getAdapter(Class clazz) { + if (clazz == MainFragmentAdapter.class) { + return mMainFragmentAdapter; + } + return null; } } @@ -323,3 +336,4 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm } } } + diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseSupportFragment.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseSupportFragment.java index bbbf13321..66c8764f7 100644 --- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseSupportFragment.java +++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/BrowseSupportFragment.java @@ -19,15 +19,14 @@ import android.support.v4.app.Fragment; import android.content.Intent; import android.os.Bundle; import android.os.Handler; +import android.support.v17.leanback.app.Adaptable; import android.support.v17.leanback.app.GuidedStepSupportFragment; import android.support.v17.leanback.app.RowsSupportFragment; -import android.support.v17.leanback.app.RowsSupportFragmentAdapter; import android.support.v17.leanback.widget.ArrayObjectAdapter; import android.support.v17.leanback.widget.HeaderItem; import android.support.v17.leanback.widget.ImageCardView; import android.support.v17.leanback.widget.ListRow; import android.support.v17.leanback.widget.ListRowPresenter; -import android.support.v17.leanback.widget.ObjectAdapter; import android.support.v17.leanback.widget.OnItemViewClickedListener; import android.support.v17.leanback.widget.OnItemViewSelectedListener; import android.support.v17.leanback.widget.PageRow; @@ -46,7 +45,9 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow private static final String TAG = "leanback.BrowseSupportFragment"; private static final boolean TEST_ENTRANCE_TRANSITION = true; - private static final int NUM_ROWS = 4; + private static final int NUM_ROWS = 8; + private static final long HEADER_ID1 = 1001; + private static final long HEADER_ID2 = 1002; private ArrayObjectAdapter mRowsAdapter; private BackgroundHelper mBackgroundHelper = new BackgroundHelper(); @@ -57,7 +58,7 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow final CardPresenter mCardPresenter2 = new CardPresenter(R.style.MyImageCardViewTheme); public BrowseSupportFragment() { - setMainSupportFragmentAdapterFactory(new MainFragmentFactorAdapterImpl()); + getMainFragmentRegistry().registerFragment(PageRow.class, new PageRowFragmentFactory()); } @Override @@ -68,7 +69,7 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow setBadgeDrawable(getActivity().getResources().getDrawable(R.drawable.ic_title)); setTitle("Leanback Sample App"); setHeadersState(HEADERS_ENABLED); - + setupRows(); setOnSearchClickedListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -77,7 +78,6 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow } }); - setupRows(); setOnItemViewClickedListener(new ItemViewClickedListener()); setOnItemViewSelectedListener(new OnItemViewSelectedListener() { @Override @@ -99,6 +99,7 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow prepareEntranceTransition(); } } + // simulates in a real world use case data being loaded two seconds later new Handler().postDelayed(new Runnable() { public void run() { @@ -121,15 +122,16 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow private void loadData() { int i = 0; + + HeaderItem header = new HeaderItem(HEADER_ID1, "Page Row " + 0); + mRowsAdapter.add(new PageRow(header)); + for (; i < NUM_ROWS; ++i) { - HeaderItem header = new HeaderItem(i, "Row " + i); + header = new HeaderItem(i, "Row " + i); mRowsAdapter.add(new ListRow(header, createListRowAdapter(i))); } - HeaderItem header = new HeaderItem(NUM_ROWS, "Page Row " + 0); - mRowsAdapter.add(new PageRow(header)); - - header = new HeaderItem(NUM_ROWS, "Page Row " + 1); + header = new HeaderItem(HEADER_ID2, "Page Row " + 1); mRowsAdapter.add(new PageRow(header)); } @@ -204,60 +206,52 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow } } - private static class MainFragmentFactorAdapterImpl extends MainSupportFragmentAdapterFactory { - private AbstractMainFragmentAdapter pageFragmentAdapter1 = new PageFragmentAdapterImpl(); - private RowsSupportFragmentAdapter gridPageFragmentAdapter; + public static class PageRowFragmentFactory extends FragmentFactory { @Override - public AbstractMainFragmentAdapter getPageFragmentAdapter( - ObjectAdapter adapter, int position) { - if (position == 4) { - return pageFragmentAdapter1; - } else { - if (gridPageFragmentAdapter == null) { - gridPageFragmentAdapter = new GridPageFragmentAdapterImpl(); - } - return gridPageFragmentAdapter; + public Fragment createFragment(Object rowObj) { + Row row = (Row) rowObj; + if (row.getHeaderItem().getId() == HEADER_ID1) { + return new SampleFragment(); + } else if (row.getHeaderItem().getId() == HEADER_ID2) { + return new SampleRowsSupportFragment(); } + + return null; } } - private static class PageFragmentAdapterImpl extends AbstractMainFragmentAdapter { - private Fragment mFragment; + public static class PageFragmentAdapterImpl extends MainFragmentAdapter { - PageFragmentAdapterImpl() { + public PageFragmentAdapterImpl(SampleFragment fragment) { + super(fragment); setScalingEnabled(true); } - - @Override - public Fragment getFragment() { - if (mFragment == null) { - mFragment = new SampleFragment(); - } - return mFragment; - } } - private static class GridPageFragmentAdapterImpl extends RowsSupportFragmentAdapter { + public static class SampleRowsSupportFragment extends RowsSupportFragment { final CardPresenter mCardPresenter = new CardPresenter(); final CardPresenter mCardPresenter2 = new CardPresenter(R.style.MyImageCardViewTheme); - private RowsSupportFragment mFragment; - GridPageFragmentAdapterImpl() { - setScalingEnabled(true); - } - - protected Fragment createFragment() { - if (mFragment == null) { - mFragment = new RowsSupportFragment(); - ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ListRowPresenter()); - for (int i = 0; i < 4; i++) { - ListRow row = new ListRow(new HeaderItem("Row " + i), createListRowAdapter(i)); - adapter.add(row); - } - mFragment.setAdapter(adapter); + public SampleRowsSupportFragment() { + ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ListRowPresenter()); + for (int i = 0; i < 4; i++) { + ListRow row = new ListRow(new HeaderItem("Row " + i), createListRowAdapter(i)); + adapter.add(row); } - return mFragment; + setAdapter(adapter); + + setOnItemViewClickedListener(new OnItemViewClickedListener() { + @Override + public void onItemClicked( + Presenter.ViewHolder itemViewHolder, + Object item, + RowPresenter.ViewHolder rowViewHolder, Row row) { + Intent intent = new Intent( + itemViewHolder.view.getContext(), GuidedStepSupportActivity.class); + startActivity(intent); + } + }); } private ArrayObjectAdapter createListRowAdapter(int i) { @@ -296,12 +290,31 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow } } - private static class SampleFragment extends Fragment { + public static class SampleFragment extends Fragment implements Adaptable { + + final PageFragmentAdapterImpl mMainFragmentAdapter = new PageFragmentAdapterImpl(this); @Override public View onCreateView( - LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return inflater.inflate(R.layout.page_fragment, container, false); + final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.page_fragment, container, false); + view.findViewById(R.id.tv1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(inflater.getContext(), GuidedStepSupportActivity.class); + startActivity(intent); + } + }); + + return view; + } + + @Override + public PageFragmentAdapterImpl getAdapter(Class clazz) { + if (clazz == MainFragmentAdapter.class) { + return mMainFragmentAdapter; + } + return null; } } @@ -325,3 +338,4 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow } } } +