Home | History | Annotate | Download | only in app
      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