1 /* This file is auto-generated from BrowseTestFragment.java.  DO NOT MODIFY. */
2 
3 /*
4  * Copyright (C) 2015 The Android Open Source Project
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
7  * in compliance with the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software distributed under the License
12  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
13  * or implied. See the License for the specific language governing permissions and limitations under
14  * the License.
15  */
16 package android.support.v17.leanback.app;
17 
18 import android.os.Bundle;
19 import android.os.Handler;
20 import android.support.v17.leanback.widget.ArrayObjectAdapter;
21 import android.support.v17.leanback.widget.HeaderItem;
22 import android.support.v17.leanback.widget.ListRow;
23 import android.support.v17.leanback.widget.ListRowPresenter;
24 import android.support.v17.leanback.widget.OnItemViewClickedListener;
25 import android.support.v17.leanback.widget.OnItemViewSelectedListener;
26 import android.support.v17.leanback.widget.Presenter;
27 import android.support.v17.leanback.widget.Row;
28 import android.support.v17.leanback.widget.RowPresenter;
29 import android.util.Log;
30 import android.view.View;
31 
32 /**
33  * @hide from javadoc
34  */
35 public class BrowseTestSupportFragment extends BrowseSupportFragment {
36     private static final String TAG = "BrowseTestSupportFragment";
37 
38     final static int DEFAULT_NUM_ROWS = 100;
39     final static int DEFAULT_REPEAT_PER_ROW = 20;
40     final static long DEFAULT_LOAD_DATA_DELAY = 2000;
41     final static boolean DEFAULT_TEST_ENTRANCE_TRANSITION = true;
42 
43     static int NUM_ROWS = DEFAULT_NUM_ROWS;
44     static int REPEAT_PER_ROW = DEFAULT_REPEAT_PER_ROW;
45     static long LOAD_DATA_DELAY = DEFAULT_LOAD_DATA_DELAY;
46     static boolean TEST_ENTRANCE_TRANSITION = DEFAULT_TEST_ENTRANCE_TRANSITION;
47 
48     private ArrayObjectAdapter mRowsAdapter;
49 
50     // For good performance, it's important to use a single instance of
51     // a card presenter for all rows using that presenter.
52     final static StringPresenter sCardPresenter = new StringPresenter();
53 
54     @Override
onCreate(Bundle savedInstanceState)55     public void onCreate(Bundle savedInstanceState) {
56         Log.i(TAG, "onCreate");
57         super.onCreate(savedInstanceState);
58 
59         setTitle("BrowseTestSupportFragment");
60         setHeadersState(HEADERS_ENABLED);
61 
62         setOnSearchClickedListener(new View.OnClickListener() {
63             @Override
64             public void onClick(View view) {
65                 Log.i(TAG, "onSearchClicked");
66             }
67         });
68 
69         setupRows();
70         setOnItemViewClickedListener(new ItemViewClickedListener());
71         setOnItemViewSelectedListener(new OnItemViewSelectedListener() {
72             @Override
73             public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item,
74                     RowPresenter.ViewHolder rowViewHolder, Row row) {
75                 Log.i(TAG, "onItemSelected: " + item + " row " + row);
76             }
77         });
78         if (TEST_ENTRANCE_TRANSITION) {
79             // don't run entrance transition if fragment is restored.
80             if (savedInstanceState == null) {
81                 prepareEntranceTransition();
82             }
83         }
84         // simulates in a real world use case  data being loaded two seconds later
85         new Handler().postDelayed(new Runnable() {
86             @Override
87             public void run() {
88                 loadData();
89                 startEntranceTransition();
90             }
91         }, LOAD_DATA_DELAY);
92     }
93 
setupRows()94     private void setupRows() {
95         ListRowPresenter lrp = new ListRowPresenter();
96 
97         mRowsAdapter = new ArrayObjectAdapter(lrp);
98 
99         setAdapter(mRowsAdapter);
100     }
101 
loadData()102     private void loadData() {
103         for (int i = 0; i < NUM_ROWS; ++i) {
104             ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(sCardPresenter);
105             for (int j = 0; j < REPEAT_PER_ROW; ++j) {
106                 listRowAdapter.add("Hello world");
107                 listRowAdapter.add("This is a test");
108                 listRowAdapter.add("Android TV");
109                 listRowAdapter.add("Leanback");
110                 listRowAdapter.add("Hello world");
111                 listRowAdapter.add("Android TV");
112                 listRowAdapter.add("Leanback");
113                 listRowAdapter.add("GuidedStepFragment");
114             }
115             HeaderItem header = new HeaderItem(i, "Row " + i);
116             mRowsAdapter.add(new ListRow(header, listRowAdapter));
117         }
118 
119     }
120 
121     private final class ItemViewClickedListener implements OnItemViewClickedListener {
122         @Override
onItemClicked(Presenter.ViewHolder itemViewHolder, Object item, RowPresenter.ViewHolder rowViewHolder, Row row)123         public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
124                 RowPresenter.ViewHolder rowViewHolder, Row row) {
125             Log.i(TAG, "onItemClicked: " + item + " row " + row);
126         }
127     }
128 }
129