1ab1446d0f5eec61d339c4bbcb20d922b25fd1e73Dake Gu// CHECKSTYLE:OFF Generated code 2ab1446d0f5eec61d339c4bbcb20d922b25fd1e73Dake Gu/* This file is auto-generated from DetailsTestSupportFragment.java. DO NOT MODIFY. */ 3ab1446d0f5eec61d339c4bbcb20d922b25fd1e73Dake Gu 4180dc4030628425a8081fe058bdc1d529c505ae8susnata/* 5180dc4030628425a8081fe058bdc1d529c505ae8susnata * Copyright (C) 2016 The Android Open Source Project 6180dc4030628425a8081fe058bdc1d529c505ae8susnata * 7180dc4030628425a8081fe058bdc1d529c505ae8susnata * Licensed under the Apache License, Version 2.0 (the "License"); 8180dc4030628425a8081fe058bdc1d529c505ae8susnata * you may not use this file except in compliance with the License. 9180dc4030628425a8081fe058bdc1d529c505ae8susnata * You may obtain a copy of the License at 10180dc4030628425a8081fe058bdc1d529c505ae8susnata * 11180dc4030628425a8081fe058bdc1d529c505ae8susnata * http://www.apache.org/licenses/LICENSE-2.0 12180dc4030628425a8081fe058bdc1d529c505ae8susnata * 13180dc4030628425a8081fe058bdc1d529c505ae8susnata * Unless required by applicable law or agreed to in writing, software 14180dc4030628425a8081fe058bdc1d529c505ae8susnata * distributed under the License is distributed on an "AS IS" BASIS, 15180dc4030628425a8081fe058bdc1d529c505ae8susnata * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16180dc4030628425a8081fe058bdc1d529c505ae8susnata * See the License for the specific language governing permissions and 17180dc4030628425a8081fe058bdc1d529c505ae8susnata * limitations under the License. 18180dc4030628425a8081fe058bdc1d529c505ae8susnata */ 19ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.leanback.app; 20180dc4030628425a8081fe058bdc1d529c505ae8susnata 21180dc4030628425a8081fe058bdc1d529c505ae8susnataimport android.content.res.Resources; 22180dc4030628425a8081fe058bdc1d529c505ae8susnataimport android.os.Bundle; 23180dc4030628425a8081fe058bdc1d529c505ae8susnataimport android.os.Handler; 248619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikasimport android.view.ViewGroup; 258619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikas 26ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.test.R; 27ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.AbstractDetailsDescriptionPresenter; 28ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.Action; 29ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ArrayObjectAdapter; 30ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ClassPresenterSelector; 31ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.DetailsOverviewRow; 32ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter; 33ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.HeaderItem; 34ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ImageCardView; 35ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ListRow; 36ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ListRowPresenter; 37ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.Presenter; 38ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.SparseArrayObjectAdapter; 39180dc4030628425a8081fe058bdc1d529c505ae8susnata 409869eb38607552105baa88a0fcba610461045eb5Dake Gu/** 419869eb38607552105baa88a0fcba610461045eb5Dake Gu * Base class provides overview row and some related rows. 429869eb38607552105baa88a0fcba610461045eb5Dake Gu */ 43ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspublic class DetailsTestFragment extends androidx.leanback.app.DetailsFragment { 44180dc4030628425a8081fe058bdc1d529c505ae8susnata private static final int NUM_ROWS = 3; 45180dc4030628425a8081fe058bdc1d529c505ae8susnata private ArrayObjectAdapter mRowsAdapter; 46180dc4030628425a8081fe058bdc1d529c505ae8susnata private PhotoItem mPhotoItem; 47180dc4030628425a8081fe058bdc1d529c505ae8susnata private final Presenter mCardPresenter = new Presenter() { 48180dc4030628425a8081fe058bdc1d529c505ae8susnata @Override 49180dc4030628425a8081fe058bdc1d529c505ae8susnata public ViewHolder onCreateViewHolder(ViewGroup parent) { 50180dc4030628425a8081fe058bdc1d529c505ae8susnata ImageCardView cardView = new ImageCardView(getActivity()); 51180dc4030628425a8081fe058bdc1d529c505ae8susnata cardView.setFocusable(true); 52180dc4030628425a8081fe058bdc1d529c505ae8susnata cardView.setFocusableInTouchMode(true); 53180dc4030628425a8081fe058bdc1d529c505ae8susnata return new ViewHolder(cardView); 54180dc4030628425a8081fe058bdc1d529c505ae8susnata } 55180dc4030628425a8081fe058bdc1d529c505ae8susnata 56180dc4030628425a8081fe058bdc1d529c505ae8susnata @Override 57180dc4030628425a8081fe058bdc1d529c505ae8susnata public void onBindViewHolder(ViewHolder viewHolder, Object item) { 58180dc4030628425a8081fe058bdc1d529c505ae8susnata ImageCardView imageCardView = (ImageCardView) viewHolder.view; 59180dc4030628425a8081fe058bdc1d529c505ae8susnata imageCardView.setTitleText("Android Tv"); 60180dc4030628425a8081fe058bdc1d529c505ae8susnata imageCardView.setContentText("Android Tv Production Inc."); 61180dc4030628425a8081fe058bdc1d529c505ae8susnata imageCardView.setMainImageDimensions(313, 176); 62180dc4030628425a8081fe058bdc1d529c505ae8susnata } 63180dc4030628425a8081fe058bdc1d529c505ae8susnata 64180dc4030628425a8081fe058bdc1d529c505ae8susnata @Override 65180dc4030628425a8081fe058bdc1d529c505ae8susnata public void onUnbindViewHolder(ViewHolder viewHolder) { 66180dc4030628425a8081fe058bdc1d529c505ae8susnata } 67180dc4030628425a8081fe058bdc1d529c505ae8susnata }; 68180dc4030628425a8081fe058bdc1d529c505ae8susnata 69180dc4030628425a8081fe058bdc1d529c505ae8susnata private static final int ACTION_RENT = 2; 70180dc4030628425a8081fe058bdc1d529c505ae8susnata private static final int ACTION_BUY = 3; 71180dc4030628425a8081fe058bdc1d529c505ae8susnata 729869eb38607552105baa88a0fcba610461045eb5Dake Gu protected long mTimeToLoadOverviewRow = 1000; 739869eb38607552105baa88a0fcba610461045eb5Dake Gu protected long mTimeToLoadRelatedRow = 2000; 74180dc4030628425a8081fe058bdc1d529c505ae8susnata 75180dc4030628425a8081fe058bdc1d529c505ae8susnata private Action mActionRent; 76180dc4030628425a8081fe058bdc1d529c505ae8susnata private Action mActionBuy; 77180dc4030628425a8081fe058bdc1d529c505ae8susnata 789869eb38607552105baa88a0fcba610461045eb5Dake Gu protected int mMinVerticalOffset = -100; 79180dc4030628425a8081fe058bdc1d529c505ae8susnata 80180dc4030628425a8081fe058bdc1d529c505ae8susnata @Override 81180dc4030628425a8081fe058bdc1d529c505ae8susnata public void onCreate(Bundle savedInstanceState) { 82180dc4030628425a8081fe058bdc1d529c505ae8susnata super.onCreate(savedInstanceState); 83180dc4030628425a8081fe058bdc1d529c505ae8susnata setTitle("Leanback Sample App"); 84180dc4030628425a8081fe058bdc1d529c505ae8susnata 85180dc4030628425a8081fe058bdc1d529c505ae8susnata mActionRent = new Action(ACTION_RENT, "Rent", "$3.99", 86180dc4030628425a8081fe058bdc1d529c505ae8susnata getResources().getDrawable(R.drawable.ic_action_a)); 87180dc4030628425a8081fe058bdc1d529c505ae8susnata mActionBuy = new Action(ACTION_BUY, "Buy $9.99"); 88180dc4030628425a8081fe058bdc1d529c505ae8susnata 89180dc4030628425a8081fe058bdc1d529c505ae8susnata ClassPresenterSelector ps = new ClassPresenterSelector(); 90180dc4030628425a8081fe058bdc1d529c505ae8susnata FullWidthDetailsOverviewRowPresenter dorPresenter = 91180dc4030628425a8081fe058bdc1d529c505ae8susnata new FullWidthDetailsOverviewRowPresenter(new AbstractDetailsDescriptionPresenter() { 92180dc4030628425a8081fe058bdc1d529c505ae8susnata @Override 93180dc4030628425a8081fe058bdc1d529c505ae8susnata protected void onBindDescription( 94180dc4030628425a8081fe058bdc1d529c505ae8susnata AbstractDetailsDescriptionPresenter.ViewHolder vh, Object item) { 95180dc4030628425a8081fe058bdc1d529c505ae8susnata vh.getTitle().setText("Funny Movie"); 96180dc4030628425a8081fe058bdc1d529c505ae8susnata vh.getSubtitle().setText("Android TV Production Inc."); 97180dc4030628425a8081fe058bdc1d529c505ae8susnata vh.getBody().setText("What a great movie!"); 98180dc4030628425a8081fe058bdc1d529c505ae8susnata } 99180dc4030628425a8081fe058bdc1d529c505ae8susnata }); 100180dc4030628425a8081fe058bdc1d529c505ae8susnata 101180dc4030628425a8081fe058bdc1d529c505ae8susnata ps.addClassPresenter(DetailsOverviewRow.class, dorPresenter); 102180dc4030628425a8081fe058bdc1d529c505ae8susnata ps.addClassPresenter(ListRow.class, new ListRowPresenter()); 103180dc4030628425a8081fe058bdc1d529c505ae8susnata mRowsAdapter = new ArrayObjectAdapter(ps); 104180dc4030628425a8081fe058bdc1d529c505ae8susnata } 105180dc4030628425a8081fe058bdc1d529c505ae8susnata 106180dc4030628425a8081fe058bdc1d529c505ae8susnata public void setItem(PhotoItem photoItem) { 107180dc4030628425a8081fe058bdc1d529c505ae8susnata mPhotoItem = photoItem; 108180dc4030628425a8081fe058bdc1d529c505ae8susnata mRowsAdapter.clear(); 109180dc4030628425a8081fe058bdc1d529c505ae8susnata new Handler().postDelayed(new Runnable() { 110e2104f4b5c8e3ad63570306a25e61502dfe4c418Aurimas Liutikas @Override 111180dc4030628425a8081fe058bdc1d529c505ae8susnata public void run() { 112738deb3f9c75ea32dff1bf335753703e40e87f39Dake Gu if (getActivity() == null) { 113738deb3f9c75ea32dff1bf335753703e40e87f39Dake Gu return; 114738deb3f9c75ea32dff1bf335753703e40e87f39Dake Gu } 115180dc4030628425a8081fe058bdc1d529c505ae8susnata Resources res = getActivity().getResources(); 116180dc4030628425a8081fe058bdc1d529c505ae8susnata DetailsOverviewRow dor = new DetailsOverviewRow(mPhotoItem.getTitle()); 117180dc4030628425a8081fe058bdc1d529c505ae8susnata dor.setImageDrawable(res.getDrawable(mPhotoItem.getImageResourceId())); 118180dc4030628425a8081fe058bdc1d529c505ae8susnata SparseArrayObjectAdapter adapter = new SparseArrayObjectAdapter(); 119180dc4030628425a8081fe058bdc1d529c505ae8susnata adapter.set(ACTION_RENT, mActionRent); 120180dc4030628425a8081fe058bdc1d529c505ae8susnata adapter.set(ACTION_BUY, mActionBuy); 121180dc4030628425a8081fe058bdc1d529c505ae8susnata dor.setActionsAdapter(adapter); 122180dc4030628425a8081fe058bdc1d529c505ae8susnata mRowsAdapter.add(0, dor); 123180dc4030628425a8081fe058bdc1d529c505ae8susnata setSelectedPosition(0, true); 124180dc4030628425a8081fe058bdc1d529c505ae8susnata } 1259869eb38607552105baa88a0fcba610461045eb5Dake Gu }, mTimeToLoadOverviewRow); 126180dc4030628425a8081fe058bdc1d529c505ae8susnata 127180dc4030628425a8081fe058bdc1d529c505ae8susnata 128180dc4030628425a8081fe058bdc1d529c505ae8susnata new Handler().postDelayed(new Runnable() { 129e2104f4b5c8e3ad63570306a25e61502dfe4c418Aurimas Liutikas @Override 130180dc4030628425a8081fe058bdc1d529c505ae8susnata public void run() { 131738deb3f9c75ea32dff1bf335753703e40e87f39Dake Gu if (getActivity() == null) { 132738deb3f9c75ea32dff1bf335753703e40e87f39Dake Gu return; 133738deb3f9c75ea32dff1bf335753703e40e87f39Dake Gu } 134180dc4030628425a8081fe058bdc1d529c505ae8susnata for (int i = 0; i < NUM_ROWS; ++i) { 135180dc4030628425a8081fe058bdc1d529c505ae8susnata ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(mCardPresenter); 136180dc4030628425a8081fe058bdc1d529c505ae8susnata listRowAdapter.add(new PhotoItem("Hello world", R.drawable.spiderman)); 137180dc4030628425a8081fe058bdc1d529c505ae8susnata listRowAdapter.add(new PhotoItem("This is a test", R.drawable.spiderman)); 138180dc4030628425a8081fe058bdc1d529c505ae8susnata listRowAdapter.add(new PhotoItem("Android TV", R.drawable.spiderman)); 139180dc4030628425a8081fe058bdc1d529c505ae8susnata listRowAdapter.add(new PhotoItem("Leanback", R.drawable.spiderman)); 140180dc4030628425a8081fe058bdc1d529c505ae8susnata HeaderItem header = new HeaderItem(i, "Row " + i); 141180dc4030628425a8081fe058bdc1d529c505ae8susnata mRowsAdapter.add(new ListRow(header, listRowAdapter)); 142180dc4030628425a8081fe058bdc1d529c505ae8susnata } 143180dc4030628425a8081fe058bdc1d529c505ae8susnata } 1449869eb38607552105baa88a0fcba610461045eb5Dake Gu }, mTimeToLoadRelatedRow); 145180dc4030628425a8081fe058bdc1d529c505ae8susnata 146180dc4030628425a8081fe058bdc1d529c505ae8susnata setAdapter(mRowsAdapter); 147180dc4030628425a8081fe058bdc1d529c505ae8susnata } 148180dc4030628425a8081fe058bdc1d529c505ae8susnata 149180dc4030628425a8081fe058bdc1d529c505ae8susnata} 150