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