Adding page fragment inside BrowseFragment demo

Change-Id: If6f453f2398d8fc5beba16e2a2e126566b9b65e2
This commit is contained in:
susnata
2016-03-15 10:29:29 -07:00
parent 35e26312db
commit b0a80e28d5
4 changed files with 135 additions and 108 deletions

View File

@@ -4,7 +4,7 @@
android:versionCode="1" android:versionCode="1"
android:versionName="1.0"> android:versionName="1.0">
<uses-sdk android:minSdkVersion="17" android:targetSdkVersion="19" /> <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="23" />
<application <application
android:label="@string/app_name" android:label="@string/app_name"

View File

@@ -66,7 +66,6 @@ for line in file:
line = line.replace('RowsActivity', 'RowsSupportActivity') line = line.replace('RowsActivity', 'RowsSupportActivity')
line = line.replace('RowsFragment', 'RowsSupportFragment') line = line.replace('RowsFragment', 'RowsSupportFragment')
line = line.replace('GuidedStepHalfScreenActivity', 'GuidedStepSupportHalfScreenActivity') line = line.replace('GuidedStepHalfScreenActivity', 'GuidedStepSupportHalfScreenActivity')
line = line.replace('MainFragmentAdapterFactory', 'MainSupportFragmentAdapterFactory')
outfile.write(line) outfile.write(line)
file.close() file.close()
outfile.close() outfile.close()

View File

@@ -17,15 +17,14 @@ import android.app.Fragment;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.support.v17.leanback.app.Adaptable;
import android.support.v17.leanback.app.GuidedStepFragment; import android.support.v17.leanback.app.GuidedStepFragment;
import android.support.v17.leanback.app.RowsFragment; import android.support.v17.leanback.app.RowsFragment;
import android.support.v17.leanback.app.RowsFragmentAdapter;
import android.support.v17.leanback.widget.ArrayObjectAdapter; import android.support.v17.leanback.widget.ArrayObjectAdapter;
import android.support.v17.leanback.widget.HeaderItem; import android.support.v17.leanback.widget.HeaderItem;
import android.support.v17.leanback.widget.ImageCardView; import android.support.v17.leanback.widget.ImageCardView;
import android.support.v17.leanback.widget.ListRow; import android.support.v17.leanback.widget.ListRow;
import android.support.v17.leanback.widget.ListRowPresenter; 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.OnItemViewClickedListener;
import android.support.v17.leanback.widget.OnItemViewSelectedListener; import android.support.v17.leanback.widget.OnItemViewSelectedListener;
import android.support.v17.leanback.widget.PageRow; import android.support.v17.leanback.widget.PageRow;
@@ -44,7 +43,9 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
private static final String TAG = "leanback.BrowseFragment"; private static final String TAG = "leanback.BrowseFragment";
private static final boolean TEST_ENTRANCE_TRANSITION = true; 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 ArrayObjectAdapter mRowsAdapter;
private BackgroundHelper mBackgroundHelper = new BackgroundHelper(); private BackgroundHelper mBackgroundHelper = new BackgroundHelper();
@@ -55,7 +56,7 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
final CardPresenter mCardPresenter2 = new CardPresenter(R.style.MyImageCardViewTheme); final CardPresenter mCardPresenter2 = new CardPresenter(R.style.MyImageCardViewTheme);
public BrowseFragment() { public BrowseFragment() {
setMainFragmentAdapterFactory(new MainFragmentFactorAdapterImpl()); getMainFragmentRegistry().registerFragment(PageRow.class, new PageRowFragmentFactory());
} }
@Override @Override
@@ -66,7 +67,7 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
setBadgeDrawable(getActivity().getResources().getDrawable(R.drawable.ic_title)); setBadgeDrawable(getActivity().getResources().getDrawable(R.drawable.ic_title));
setTitle("Leanback Sample App"); setTitle("Leanback Sample App");
setHeadersState(HEADERS_ENABLED); setHeadersState(HEADERS_ENABLED);
setupRows();
setOnSearchClickedListener(new View.OnClickListener() { setOnSearchClickedListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
@@ -75,7 +76,6 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
} }
}); });
setupRows();
setOnItemViewClickedListener(new ItemViewClickedListener()); setOnItemViewClickedListener(new ItemViewClickedListener());
setOnItemViewSelectedListener(new OnItemViewSelectedListener() { setOnItemViewSelectedListener(new OnItemViewSelectedListener() {
@Override @Override
@@ -97,6 +97,7 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
prepareEntranceTransition(); prepareEntranceTransition();
} }
} }
// simulates in a real world use case data being loaded two seconds later // simulates in a real world use case data being loaded two seconds later
new Handler().postDelayed(new Runnable() { new Handler().postDelayed(new Runnable() {
public void run() { public void run() {
@@ -119,15 +120,16 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
private void loadData() { private void loadData() {
int i = 0; int i = 0;
HeaderItem header = new HeaderItem(HEADER_ID1, "Page Row " + 0);
mRowsAdapter.add(new PageRow(header));
for (; i < NUM_ROWS; ++i) { 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))); mRowsAdapter.add(new ListRow(header, createListRowAdapter(i)));
} }
HeaderItem header = new HeaderItem(NUM_ROWS, "Page Row " + 0); header = new HeaderItem(HEADER_ID2, "Page Row " + 1);
mRowsAdapter.add(new PageRow(header));
header = new HeaderItem(NUM_ROWS, "Page Row " + 1);
mRowsAdapter.add(new PageRow(header)); mRowsAdapter.add(new PageRow(header));
} }
@@ -202,60 +204,52 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
} }
} }
private static class MainFragmentFactorAdapterImpl extends MainFragmentAdapterFactory { public static class PageRowFragmentFactory extends FragmentFactory {
private AbstractMainFragmentAdapter pageFragmentAdapter1 = new PageFragmentAdapterImpl();
private RowsFragmentAdapter gridPageFragmentAdapter;
@Override @Override
public AbstractMainFragmentAdapter getPageFragmentAdapter( public Fragment createFragment(Object rowObj) {
ObjectAdapter adapter, int position) { Row row = (Row) rowObj;
if (position == 4) { if (row.getHeaderItem().getId() == HEADER_ID1) {
return pageFragmentAdapter1; return new SampleFragment();
} else { } else if (row.getHeaderItem().getId() == HEADER_ID2) {
if (gridPageFragmentAdapter == null) { return new SampleRowsFragment();
gridPageFragmentAdapter = new GridPageFragmentAdapterImpl();
}
return gridPageFragmentAdapter;
} }
return null;
} }
} }
private static class PageFragmentAdapterImpl extends AbstractMainFragmentAdapter { public static class PageFragmentAdapterImpl extends MainFragmentAdapter<SampleFragment> {
private Fragment mFragment;
PageFragmentAdapterImpl() { public PageFragmentAdapterImpl(SampleFragment fragment) {
super(fragment);
setScalingEnabled(true); 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 mCardPresenter = new CardPresenter();
final CardPresenter mCardPresenter2 = new CardPresenter(R.style.MyImageCardViewTheme); final CardPresenter mCardPresenter2 = new CardPresenter(R.style.MyImageCardViewTheme);
private RowsFragment mFragment;
GridPageFragmentAdapterImpl() { public SampleRowsFragment() {
setScalingEnabled(true);
}
protected Fragment createFragment() {
if (mFragment == null) {
mFragment = new RowsFragment();
ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ListRowPresenter()); ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ListRowPresenter());
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
ListRow row = new ListRow(new HeaderItem("Row " + i), createListRowAdapter(i)); ListRow row = new ListRow(new HeaderItem("Row " + i), createListRowAdapter(i));
adapter.add(row); adapter.add(row);
} }
mFragment.setAdapter(adapter); 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);
} }
return mFragment; });
} }
private ArrayObjectAdapter createListRowAdapter(int i) { 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 @Override
public View onCreateView( public View onCreateView(
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.page_fragment, container, false); 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
} }
} }
} }

View File

@@ -19,15 +19,14 @@ import android.support.v4.app.Fragment;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.support.v17.leanback.app.Adaptable;
import android.support.v17.leanback.app.GuidedStepSupportFragment; import android.support.v17.leanback.app.GuidedStepSupportFragment;
import android.support.v17.leanback.app.RowsSupportFragment; 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.ArrayObjectAdapter;
import android.support.v17.leanback.widget.HeaderItem; import android.support.v17.leanback.widget.HeaderItem;
import android.support.v17.leanback.widget.ImageCardView; import android.support.v17.leanback.widget.ImageCardView;
import android.support.v17.leanback.widget.ListRow; import android.support.v17.leanback.widget.ListRow;
import android.support.v17.leanback.widget.ListRowPresenter; 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.OnItemViewClickedListener;
import android.support.v17.leanback.widget.OnItemViewSelectedListener; import android.support.v17.leanback.widget.OnItemViewSelectedListener;
import android.support.v17.leanback.widget.PageRow; 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 String TAG = "leanback.BrowseSupportFragment";
private static final boolean TEST_ENTRANCE_TRANSITION = true; 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 ArrayObjectAdapter mRowsAdapter;
private BackgroundHelper mBackgroundHelper = new BackgroundHelper(); 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); final CardPresenter mCardPresenter2 = new CardPresenter(R.style.MyImageCardViewTheme);
public BrowseSupportFragment() { public BrowseSupportFragment() {
setMainSupportFragmentAdapterFactory(new MainFragmentFactorAdapterImpl()); getMainFragmentRegistry().registerFragment(PageRow.class, new PageRowFragmentFactory());
} }
@Override @Override
@@ -68,7 +69,7 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow
setBadgeDrawable(getActivity().getResources().getDrawable(R.drawable.ic_title)); setBadgeDrawable(getActivity().getResources().getDrawable(R.drawable.ic_title));
setTitle("Leanback Sample App"); setTitle("Leanback Sample App");
setHeadersState(HEADERS_ENABLED); setHeadersState(HEADERS_ENABLED);
setupRows();
setOnSearchClickedListener(new View.OnClickListener() { setOnSearchClickedListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
@@ -77,7 +78,6 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow
} }
}); });
setupRows();
setOnItemViewClickedListener(new ItemViewClickedListener()); setOnItemViewClickedListener(new ItemViewClickedListener());
setOnItemViewSelectedListener(new OnItemViewSelectedListener() { setOnItemViewSelectedListener(new OnItemViewSelectedListener() {
@Override @Override
@@ -99,6 +99,7 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow
prepareEntranceTransition(); prepareEntranceTransition();
} }
} }
// simulates in a real world use case data being loaded two seconds later // simulates in a real world use case data being loaded two seconds later
new Handler().postDelayed(new Runnable() { new Handler().postDelayed(new Runnable() {
public void run() { public void run() {
@@ -121,15 +122,16 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow
private void loadData() { private void loadData() {
int i = 0; int i = 0;
HeaderItem header = new HeaderItem(HEADER_ID1, "Page Row " + 0);
mRowsAdapter.add(new PageRow(header));
for (; i < NUM_ROWS; ++i) { 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))); mRowsAdapter.add(new ListRow(header, createListRowAdapter(i)));
} }
HeaderItem header = new HeaderItem(NUM_ROWS, "Page Row " + 0); header = new HeaderItem(HEADER_ID2, "Page Row " + 1);
mRowsAdapter.add(new PageRow(header));
header = new HeaderItem(NUM_ROWS, "Page Row " + 1);
mRowsAdapter.add(new PageRow(header)); 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 { public static class PageRowFragmentFactory extends FragmentFactory {
private AbstractMainFragmentAdapter pageFragmentAdapter1 = new PageFragmentAdapterImpl();
private RowsSupportFragmentAdapter gridPageFragmentAdapter;
@Override @Override
public AbstractMainFragmentAdapter getPageFragmentAdapter( public Fragment createFragment(Object rowObj) {
ObjectAdapter adapter, int position) { Row row = (Row) rowObj;
if (position == 4) { if (row.getHeaderItem().getId() == HEADER_ID1) {
return pageFragmentAdapter1; return new SampleFragment();
} else { } else if (row.getHeaderItem().getId() == HEADER_ID2) {
if (gridPageFragmentAdapter == null) { return new SampleRowsSupportFragment();
gridPageFragmentAdapter = new GridPageFragmentAdapterImpl();
}
return gridPageFragmentAdapter;
} }
return null;
} }
} }
private static class PageFragmentAdapterImpl extends AbstractMainFragmentAdapter { public static class PageFragmentAdapterImpl extends MainFragmentAdapter<SampleFragment> {
private Fragment mFragment;
PageFragmentAdapterImpl() { public PageFragmentAdapterImpl(SampleFragment fragment) {
super(fragment);
setScalingEnabled(true); 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 mCardPresenter = new CardPresenter();
final CardPresenter mCardPresenter2 = new CardPresenter(R.style.MyImageCardViewTheme); final CardPresenter mCardPresenter2 = new CardPresenter(R.style.MyImageCardViewTheme);
private RowsSupportFragment mFragment;
GridPageFragmentAdapterImpl() { public SampleRowsSupportFragment() {
setScalingEnabled(true);
}
protected Fragment createFragment() {
if (mFragment == null) {
mFragment = new RowsSupportFragment();
ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ListRowPresenter()); ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ListRowPresenter());
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
ListRow row = new ListRow(new HeaderItem("Row " + i), createListRowAdapter(i)); ListRow row = new ListRow(new HeaderItem("Row " + i), createListRowAdapter(i));
adapter.add(row); adapter.add(row);
} }
mFragment.setAdapter(adapter); 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);
} }
return mFragment; });
} }
private ArrayObjectAdapter createListRowAdapter(int i) { 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 @Override
public View onCreateView( public View onCreateView(
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.page_fragment, container, false); 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
} }
} }
} }