SupportLeanbackDemo: support delay loading page fragment data
Matching ag/989598 to notifyDataReady() when page fragment has loaded its data. Also fixed a bug using the wrong FragmentManager to open GuidedStepFragment. Bug 28471536 Change-Id: I4ce2108f0b587773ac29e8fd3b134e700121c81c
This commit is contained in:
@@ -60,6 +60,7 @@ for line in file:
|
|||||||
line = line.replace('BrowseFragment', 'BrowseSupportFragment')
|
line = line.replace('BrowseFragment', 'BrowseSupportFragment')
|
||||||
line = line.replace('GuidedStepFragment', 'GuidedStepSupportFragment')
|
line = line.replace('GuidedStepFragment', 'GuidedStepSupportFragment')
|
||||||
line = line.replace('GuidedStepActivity', 'GuidedStepSupportActivity')
|
line = line.replace('GuidedStepActivity', 'GuidedStepSupportActivity')
|
||||||
|
line = line.replace('getActivity().getFragmentManager()', 'getActivity().getSupportFragmentManager()')
|
||||||
line = line.replace('BrowseActivity', 'BrowseSupportActivity')
|
line = line.replace('BrowseActivity', 'BrowseSupportActivity')
|
||||||
line = line.replace('DetailsActivity', 'DetailsSupportActivity')
|
line = line.replace('DetailsActivity', 'DetailsSupportActivity')
|
||||||
line = line.replace('SearchActivity', 'SearchSupportActivity')
|
line = line.replace('SearchActivity', 'SearchSupportActivity')
|
||||||
|
|||||||
@@ -228,7 +228,7 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
|
|||||||
public Fragment createFragment(Object rowObj) {
|
public Fragment createFragment(Object rowObj) {
|
||||||
Row row = (Row) rowObj;
|
Row row = (Row) rowObj;
|
||||||
if (row.getHeaderItem().getId() == HEADER_ID1) {
|
if (row.getHeaderItem().getId() == HEADER_ID1) {
|
||||||
return new SampleFragment();
|
return new SampleRowsFragment();
|
||||||
} else if (row.getHeaderItem().getId() == HEADER_ID2) {
|
} else if (row.getHeaderItem().getId() == HEADER_ID2) {
|
||||||
return new SampleRowsFragment();
|
return new SampleRowsFragment();
|
||||||
} else if (row.getHeaderItem().getId() == HEADER_ID3) {
|
} else if (row.getHeaderItem().getId() == HEADER_ID3) {
|
||||||
@@ -239,30 +239,31 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class PageFragmentAdapterImpl extends MainFragmentAdapter<SampleFragment> {
|
|
||||||
|
|
||||||
public PageFragmentAdapterImpl(SampleFragment fragment) {
|
|
||||||
super(fragment);
|
|
||||||
setScalingEnabled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setEntranceTransitionState(boolean state) {
|
|
||||||
getFragment().setEntranceTransitionState(state);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class SampleRowsFragment extends RowsFragment {
|
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);
|
||||||
|
|
||||||
public SampleRowsFragment() {
|
void loadFragmentData() {
|
||||||
ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ListRowPresenter());
|
ArrayObjectAdapter adapter = (ArrayObjectAdapter) getAdapter();
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
if (getMainFragmentAdapter() != null) {
|
||||||
|
getMainFragmentAdapter().getFragmentHost()
|
||||||
|
.notifyDataReady(getMainFragmentAdapter());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public SampleRowsFragment() {
|
||||||
|
ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ListRowPresenter());
|
||||||
setAdapter(adapter);
|
setAdapter(adapter);
|
||||||
|
// simulates late data loading:
|
||||||
|
new Handler().postDelayed(new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
loadFragmentData();
|
||||||
|
}
|
||||||
|
}, 500);
|
||||||
|
|
||||||
setOnItemViewClickedListener(new OnItemViewClickedListener() {
|
setOnItemViewClickedListener(new OnItemViewClickedListener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -274,12 +275,12 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
|
|||||||
Intent intent;
|
Intent intent;
|
||||||
Bundle bundle;
|
Bundle bundle;
|
||||||
if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_6) {
|
if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_6) {
|
||||||
GuidedStepFragment.add(getFragmentManager(),
|
GuidedStepFragment.add(getActivity().getFragmentManager(),
|
||||||
new GuidedStepHalfScreenActivity.FirstStepFragment(),
|
new GuidedStepHalfScreenActivity.FirstStepFragment(),
|
||||||
R.id.lb_guidedstep_host);
|
R.id.lb_guidedstep_host);
|
||||||
return;
|
return;
|
||||||
} else if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_5) {
|
} else if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_5) {
|
||||||
GuidedStepFragment.add(getFragmentManager(),
|
GuidedStepFragment.add(getActivity().getFragmentManager(),
|
||||||
new GuidedStepActivity.FirstStepFragment(), R.id.lb_guidedstep_host);
|
new GuidedStepActivity.FirstStepFragment(), R.id.lb_guidedstep_host);
|
||||||
return;
|
return;
|
||||||
} else if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_8) {
|
} else if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_8) {
|
||||||
@@ -339,18 +340,25 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class PageFragmentAdapterImpl extends MainFragmentAdapter<SampleFragment> {
|
||||||
|
|
||||||
|
public PageFragmentAdapterImpl(SampleFragment fragment) {
|
||||||
|
super(fragment);
|
||||||
|
setScalingEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setEntranceTransitionState(boolean state) {
|
||||||
|
getFragment().setEntranceTransitionState(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static class SampleFragment extends Fragment implements MainFragmentAdapterProvider {
|
public static class SampleFragment extends Fragment implements MainFragmentAdapterProvider {
|
||||||
|
|
||||||
final PageFragmentAdapterImpl mMainFragmentAdapter = new PageFragmentAdapterImpl(this);
|
final PageFragmentAdapterImpl mMainFragmentAdapter = new PageFragmentAdapterImpl(this);
|
||||||
|
|
||||||
boolean mEntranceTransitionState = true;
|
|
||||||
|
|
||||||
public void setEntranceTransitionState(boolean state) {
|
public void setEntranceTransitionState(boolean state) {
|
||||||
mEntranceTransitionState = state;
|
|
||||||
final View view = getView();
|
final View view = getView();
|
||||||
if (view == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int visibility = state ? View.VISIBLE : View.INVISIBLE;
|
int visibility = state ? View.VISIBLE : View.INVISIBLE;
|
||||||
view.findViewById(R.id.tv1).setVisibility(visibility);
|
view.findViewById(R.id.tv1).setVisibility(visibility);
|
||||||
view.findViewById(R.id.tv2).setVisibility(visibility);
|
view.findViewById(R.id.tv2).setVisibility(visibility);
|
||||||
@@ -372,15 +380,11 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
|
|||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart() {
|
|
||||||
super.onStart();
|
|
||||||
mMainFragmentAdapter.getFragmentHost().notifyViewCreated(mMainFragmentAdapter);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||||
setEntranceTransitionState(mEntranceTransitionState);
|
// static layout has view and data ready immediately
|
||||||
|
mMainFragmentAdapter.getFragmentHost().notifyViewCreated(mMainFragmentAdapter);
|
||||||
|
mMainFragmentAdapter.getFragmentHost().notifyDataReady(mMainFragmentAdapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -230,7 +230,7 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow
|
|||||||
public Fragment createFragment(Object rowObj) {
|
public Fragment createFragment(Object rowObj) {
|
||||||
Row row = (Row) rowObj;
|
Row row = (Row) rowObj;
|
||||||
if (row.getHeaderItem().getId() == HEADER_ID1) {
|
if (row.getHeaderItem().getId() == HEADER_ID1) {
|
||||||
return new SampleFragment();
|
return new SampleRowsSupportFragment();
|
||||||
} else if (row.getHeaderItem().getId() == HEADER_ID2) {
|
} else if (row.getHeaderItem().getId() == HEADER_ID2) {
|
||||||
return new SampleRowsSupportFragment();
|
return new SampleRowsSupportFragment();
|
||||||
} else if (row.getHeaderItem().getId() == HEADER_ID3) {
|
} else if (row.getHeaderItem().getId() == HEADER_ID3) {
|
||||||
@@ -241,30 +241,31 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class PageFragmentAdapterImpl extends MainFragmentAdapter<SampleFragment> {
|
|
||||||
|
|
||||||
public PageFragmentAdapterImpl(SampleFragment fragment) {
|
|
||||||
super(fragment);
|
|
||||||
setScalingEnabled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setEntranceTransitionState(boolean state) {
|
|
||||||
getFragment().setEntranceTransitionState(state);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class SampleRowsSupportFragment extends RowsSupportFragment {
|
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);
|
||||||
|
|
||||||
public SampleRowsSupportFragment() {
|
void loadFragmentData() {
|
||||||
ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ListRowPresenter());
|
ArrayObjectAdapter adapter = (ArrayObjectAdapter) getAdapter();
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
if (getMainFragmentAdapter() != null) {
|
||||||
|
getMainFragmentAdapter().getFragmentHost()
|
||||||
|
.notifyDataReady(getMainFragmentAdapter());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public SampleRowsSupportFragment() {
|
||||||
|
ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ListRowPresenter());
|
||||||
setAdapter(adapter);
|
setAdapter(adapter);
|
||||||
|
// simulates late data loading:
|
||||||
|
new Handler().postDelayed(new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
loadFragmentData();
|
||||||
|
}
|
||||||
|
}, 500);
|
||||||
|
|
||||||
setOnItemViewClickedListener(new OnItemViewClickedListener() {
|
setOnItemViewClickedListener(new OnItemViewClickedListener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -276,12 +277,12 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow
|
|||||||
Intent intent;
|
Intent intent;
|
||||||
Bundle bundle;
|
Bundle bundle;
|
||||||
if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_6) {
|
if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_6) {
|
||||||
GuidedStepSupportFragment.add(getFragmentManager(),
|
GuidedStepSupportFragment.add(getActivity().getSupportFragmentManager(),
|
||||||
new GuidedStepSupportHalfScreenActivity.FirstStepFragment(),
|
new GuidedStepSupportHalfScreenActivity.FirstStepFragment(),
|
||||||
R.id.lb_guidedstep_host);
|
R.id.lb_guidedstep_host);
|
||||||
return;
|
return;
|
||||||
} else if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_5) {
|
} else if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_5) {
|
||||||
GuidedStepSupportFragment.add(getFragmentManager(),
|
GuidedStepSupportFragment.add(getActivity().getSupportFragmentManager(),
|
||||||
new GuidedStepSupportActivity.FirstStepFragment(), R.id.lb_guidedstep_host);
|
new GuidedStepSupportActivity.FirstStepFragment(), R.id.lb_guidedstep_host);
|
||||||
return;
|
return;
|
||||||
} else if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_8) {
|
} else if (((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_8) {
|
||||||
@@ -341,18 +342,25 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class PageFragmentAdapterImpl extends MainFragmentAdapter<SampleFragment> {
|
||||||
|
|
||||||
|
public PageFragmentAdapterImpl(SampleFragment fragment) {
|
||||||
|
super(fragment);
|
||||||
|
setScalingEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setEntranceTransitionState(boolean state) {
|
||||||
|
getFragment().setEntranceTransitionState(state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static class SampleFragment extends Fragment implements MainFragmentAdapterProvider {
|
public static class SampleFragment extends Fragment implements MainFragmentAdapterProvider {
|
||||||
|
|
||||||
final PageFragmentAdapterImpl mMainFragmentAdapter = new PageFragmentAdapterImpl(this);
|
final PageFragmentAdapterImpl mMainFragmentAdapter = new PageFragmentAdapterImpl(this);
|
||||||
|
|
||||||
boolean mEntranceTransitionState = true;
|
|
||||||
|
|
||||||
public void setEntranceTransitionState(boolean state) {
|
public void setEntranceTransitionState(boolean state) {
|
||||||
mEntranceTransitionState = state;
|
|
||||||
final View view = getView();
|
final View view = getView();
|
||||||
if (view == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int visibility = state ? View.VISIBLE : View.INVISIBLE;
|
int visibility = state ? View.VISIBLE : View.INVISIBLE;
|
||||||
view.findViewById(R.id.tv1).setVisibility(visibility);
|
view.findViewById(R.id.tv1).setVisibility(visibility);
|
||||||
view.findViewById(R.id.tv2).setVisibility(visibility);
|
view.findViewById(R.id.tv2).setVisibility(visibility);
|
||||||
@@ -374,15 +382,11 @@ public class BrowseSupportFragment extends android.support.v17.leanback.app.Brow
|
|||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart() {
|
|
||||||
super.onStart();
|
|
||||||
mMainFragmentAdapter.getFragmentHost().notifyViewCreated(mMainFragmentAdapter);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||||
setEntranceTransitionState(mEntranceTransitionState);
|
// static layout has view and data ready immediately
|
||||||
|
mMainFragmentAdapter.getFragmentHost().notifyViewCreated(mMainFragmentAdapter);
|
||||||
|
mMainFragmentAdapter.getFragmentHost().notifyDataReady(mMainFragmentAdapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user