1 // CHECKSTYLE:OFF Generated code 2 /* This file is auto-generated from DetailsTestSupportFragment.java. DO NOT MODIFY. */ 3 4 /* 5 * Copyright (C) 2016 The Android Open Source Project 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 */ 19 package androidx.leanback.app; 20 21 import android.content.res.Resources; 22 import android.os.Bundle; 23 import android.os.Handler; 24 import android.view.ViewGroup; 25 26 import androidx.leanback.test.R; 27 import androidx.leanback.widget.AbstractDetailsDescriptionPresenter; 28 import androidx.leanback.widget.Action; 29 import androidx.leanback.widget.ArrayObjectAdapter; 30 import androidx.leanback.widget.ClassPresenterSelector; 31 import androidx.leanback.widget.DetailsOverviewRow; 32 import androidx.leanback.widget.FullWidthDetailsOverviewRowPresenter; 33 import androidx.leanback.widget.HeaderItem; 34 import androidx.leanback.widget.ImageCardView; 35 import androidx.leanback.widget.ListRow; 36 import androidx.leanback.widget.ListRowPresenter; 37 import androidx.leanback.widget.Presenter; 38 import androidx.leanback.widget.SparseArrayObjectAdapter; 39 40 /** 41 * Base class provides overview row and some related rows. 42 */ 43 public class DetailsTestFragment extends androidx.leanback.app.DetailsFragment { 44 private static final int NUM_ROWS = 3; 45 private ArrayObjectAdapter mRowsAdapter; 46 private PhotoItem mPhotoItem; 47 private final Presenter mCardPresenter = new Presenter() { 48 @Override 49 public ViewHolder onCreateViewHolder(ViewGroup parent) { 50 ImageCardView cardView = new ImageCardView(getActivity()); 51 cardView.setFocusable(true); 52 cardView.setFocusableInTouchMode(true); 53 return new ViewHolder(cardView); 54 } 55 56 @Override 57 public void onBindViewHolder(ViewHolder viewHolder, Object item) { 58 ImageCardView imageCardView = (ImageCardView) viewHolder.view; 59 imageCardView.setTitleText("Android Tv"); 60 imageCardView.setContentText("Android Tv Production Inc."); 61 imageCardView.setMainImageDimensions(313, 176); 62 } 63 64 @Override 65 public void onUnbindViewHolder(ViewHolder viewHolder) { 66 } 67 }; 68 69 private static final int ACTION_RENT = 2; 70 private static final int ACTION_BUY = 3; 71 72 protected long mTimeToLoadOverviewRow = 1000; 73 protected long mTimeToLoadRelatedRow = 2000; 74 75 private Action mActionRent; 76 private Action mActionBuy; 77 78 protected int mMinVerticalOffset = -100; 79 80 @Override 81 public void onCreate(Bundle savedInstanceState) { 82 super.onCreate(savedInstanceState); 83 setTitle("Leanback Sample App"); 84 85 mActionRent = new Action(ACTION_RENT, "Rent", "$3.99", 86 getResources().getDrawable(R.drawable.ic_action_a)); 87 mActionBuy = new Action(ACTION_BUY, "Buy $9.99"); 88 89 ClassPresenterSelector ps = new ClassPresenterSelector(); 90 FullWidthDetailsOverviewRowPresenter dorPresenter = 91 new FullWidthDetailsOverviewRowPresenter(new AbstractDetailsDescriptionPresenter() { 92 @Override 93 protected void onBindDescription( 94 AbstractDetailsDescriptionPresenter.ViewHolder vh, Object item) { 95 vh.getTitle().setText("Funny Movie"); 96 vh.getSubtitle().setText("Android TV Production Inc."); 97 vh.getBody().setText("What a great movie!"); 98 } 99 }); 100 101 ps.addClassPresenter(DetailsOverviewRow.class, dorPresenter); 102 ps.addClassPresenter(ListRow.class, new ListRowPresenter()); 103 mRowsAdapter = new ArrayObjectAdapter(ps); 104 } 105 106 public void setItem(PhotoItem photoItem) { 107 mPhotoItem = photoItem; 108 mRowsAdapter.clear(); 109 new Handler().postDelayed(new Runnable() { 110 @Override 111 public void run() { 112 if (getActivity() == null) { 113 return; 114 } 115 Resources res = getActivity().getResources(); 116 DetailsOverviewRow dor = new DetailsOverviewRow(mPhotoItem.getTitle()); 117 dor.setImageDrawable(res.getDrawable(mPhotoItem.getImageResourceId())); 118 SparseArrayObjectAdapter adapter = new SparseArrayObjectAdapter(); 119 adapter.set(ACTION_RENT, mActionRent); 120 adapter.set(ACTION_BUY, mActionBuy); 121 dor.setActionsAdapter(adapter); 122 mRowsAdapter.add(0, dor); 123 setSelectedPosition(0, true); 124 } 125 }, mTimeToLoadOverviewRow); 126 127 128 new Handler().postDelayed(new Runnable() { 129 @Override 130 public void run() { 131 if (getActivity() == null) { 132 return; 133 } 134 for (int i = 0; i < NUM_ROWS; ++i) { 135 ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(mCardPresenter); 136 listRowAdapter.add(new PhotoItem("Hello world", R.drawable.spiderman)); 137 listRowAdapter.add(new PhotoItem("This is a test", R.drawable.spiderman)); 138 listRowAdapter.add(new PhotoItem("Android TV", R.drawable.spiderman)); 139 listRowAdapter.add(new PhotoItem("Leanback", R.drawable.spiderman)); 140 HeaderItem header = new HeaderItem(i, "Row " + i); 141 mRowsAdapter.add(new ListRow(header, listRowAdapter)); 142 } 143 } 144 }, mTimeToLoadRelatedRow); 145 146 setAdapter(mRowsAdapter); 147 } 148 149 } 150