1ab1446d0f5eec61d339c4bbcb20d922b25fd1e73Dake Gu// CHECKSTYLE:OFF Generated code 2ab1446d0f5eec61d339c4bbcb20d922b25fd1e73Dake Gu/* This file is auto-generated from BrowseTestSupportFragment.java. DO NOT MODIFY. */ 3ab1446d0f5eec61d339c4bbcb20d922b25fd1e73Dake Gu 4255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu/* 5255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * Copyright (C) 2015 The Android Open Source Project 6255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * 7255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 8255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * in compliance with the License. You may obtain a copy of the License at 9255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * 10255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * http://www.apache.org/licenses/LICENSE-2.0 11255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * 12255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * Unless required by applicable law or agreed to in writing, software distributed under the License 13255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 14255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * or implied. See the License for the specific language governing permissions and limitations under 15255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * the License. 16255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu */ 17ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.leanback.app; 18255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 19ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport static androidx.leanback.app.BrowseFragmentTestActivity.EXTRA_HEADERS_STATE; 20ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport static androidx.leanback.app.BrowseFragmentTestActivity.EXTRA_LOAD_DATA_DELAY; 21ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport static androidx.leanback.app.BrowseFragmentTestActivity.EXTRA_NUM_ROWS; 22ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport static androidx.leanback.app.BrowseFragmentTestActivity.EXTRA_REPEAT_PER_ROW; 23ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport static androidx.leanback.app.BrowseFragmentTestActivity.EXTRA_SET_ADAPTER_AFTER_DATA_LOAD; 24ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport static androidx.leanback.app.BrowseFragmentTestActivity.EXTRA_TEST_ENTRANCE_TRANSITION; 253103f63e99d47573823957f7aa34308555873221Aurimas Liutikas 26255e7911fa9ef664618b74bb9959e00479a9bec1Dake Guimport android.os.Bundle; 27255e7911fa9ef664618b74bb9959e00479a9bec1Dake Guimport android.os.Handler; 288619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikasimport android.util.Log; 298619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikasimport android.view.View; 308619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikas 31ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ArrayObjectAdapter; 32ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.HeaderItem; 33ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ListRow; 34ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ListRowPresenter; 35ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.OnItemViewClickedListener; 36ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.OnItemViewSelectedListener; 37ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.Presenter; 38ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.Row; 39ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.RowPresenter; 40ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.VerticalGridView; 41255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 42255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gupublic class BrowseTestFragment extends BrowseFragment { 43255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu private static final String TAG = "BrowseTestFragment"; 44255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 45255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu final static int DEFAULT_NUM_ROWS = 100; 46255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu final static int DEFAULT_REPEAT_PER_ROW = 20; 47255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu final static long DEFAULT_LOAD_DATA_DELAY = 2000; 48255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu final static boolean DEFAULT_TEST_ENTRANCE_TRANSITION = true; 4935d7a6c31606ed4ca38deda3cacae080a95c95c9susnata final static boolean DEFAULT_SET_ADAPTER_AFTER_DATA_LOAD = false; 50255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 51255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu private ArrayObjectAdapter mRowsAdapter; 52255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 53255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu // For good performance, it's important to use a single instance of 54255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu // a card presenter for all rows using that presenter. 55255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu final static StringPresenter sCardPresenter = new StringPresenter(); 56255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 57804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu int NUM_ROWS; 58804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu int REPEAT_PER_ROW; 594ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu boolean mEntranceTransitionStarted; 604ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu boolean mEntranceTransitionEnded; 61804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu 62255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu @Override 63255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu public void onCreate(Bundle savedInstanceState) { 64255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu Log.i(TAG, "onCreate"); 65255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu super.onCreate(savedInstanceState); 66255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 67804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu Bundle arguments = getArguments(); 68804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu NUM_ROWS = arguments.getInt(EXTRA_NUM_ROWS, BrowseTestFragment.DEFAULT_NUM_ROWS); 69804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu REPEAT_PER_ROW = arguments.getInt(EXTRA_REPEAT_PER_ROW, 70804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu DEFAULT_REPEAT_PER_ROW); 71804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu long LOAD_DATA_DELAY = arguments.getLong(EXTRA_LOAD_DATA_DELAY, 72804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu DEFAULT_LOAD_DATA_DELAY); 73804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu boolean TEST_ENTRANCE_TRANSITION = arguments.getBoolean( 74804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu EXTRA_TEST_ENTRANCE_TRANSITION, 75804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu DEFAULT_TEST_ENTRANCE_TRANSITION); 76804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu final boolean SET_ADAPTER_AFTER_DATA_LOAD = arguments.getBoolean( 77804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu EXTRA_SET_ADAPTER_AFTER_DATA_LOAD, 78804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu DEFAULT_SET_ADAPTER_AFTER_DATA_LOAD); 79804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu 8035d7a6c31606ed4ca38deda3cacae080a95c95c9susnata if (!SET_ADAPTER_AFTER_DATA_LOAD) { 8135d7a6c31606ed4ca38deda3cacae080a95c95c9susnata setupRows(); 8235d7a6c31606ed4ca38deda3cacae080a95c95c9susnata } 8335d7a6c31606ed4ca38deda3cacae080a95c95c9susnata 84255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu setTitle("BrowseTestFragment"); 85f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu setHeadersState(arguments.getInt(EXTRA_HEADERS_STATE, HEADERS_ENABLED)); 86255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 87255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu setOnSearchClickedListener(new View.OnClickListener() { 88255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu @Override 89255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu public void onClick(View view) { 90255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu Log.i(TAG, "onSearchClicked"); 91255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu } 92255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu }); 93255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 94255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu setOnItemViewClickedListener(new ItemViewClickedListener()); 95255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu setOnItemViewSelectedListener(new OnItemViewSelectedListener() { 96255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu @Override 97255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item, 98255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu RowPresenter.ViewHolder rowViewHolder, Row row) { 998da2c8555e4a9b8689f9f973089f3010ec44ed6cDake Gu Log.i(TAG, "onItemSelected: " + item + " row " + row); 100255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu } 101255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu }); 102255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu if (TEST_ENTRANCE_TRANSITION) { 103255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu // don't run entrance transition if fragment is restored. 104255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu if (savedInstanceState == null) { 105255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu prepareEntranceTransition(); 106255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu } 107255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu } 108255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu // simulates in a real world use case data being loaded two seconds later 109255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu new Handler().postDelayed(new Runnable() { 110255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu @Override 111255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu public void run() { 112804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu if (getActivity() == null || getActivity().isDestroyed()) { 113804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu return; 114804ebd45e0287b6f421373fb6bd2a453a3acfda0Dake Gu } 11535d7a6c31606ed4ca38deda3cacae080a95c95c9susnata if (SET_ADAPTER_AFTER_DATA_LOAD) { 11635d7a6c31606ed4ca38deda3cacae080a95c95c9susnata setupRows(); 11735d7a6c31606ed4ca38deda3cacae080a95c95c9susnata } 118255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu loadData(); 119255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu startEntranceTransition(); 120255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu } 121255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu }, LOAD_DATA_DELAY); 122255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu } 123255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 124255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu private void setupRows() { 125255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu ListRowPresenter lrp = new ListRowPresenter(); 126255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 127255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu mRowsAdapter = new ArrayObjectAdapter(lrp); 128255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 129255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu setAdapter(mRowsAdapter); 130255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu } 131255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 1324ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu @Override 1334ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu protected void onEntranceTransitionStart() { 1344ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu super.onEntranceTransitionStart(); 1354ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu mEntranceTransitionStarted = true; 1364ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu } 1374ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu 1384ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu @Override 1394ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu protected void onEntranceTransitionEnd() { 1404ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu super.onEntranceTransitionEnd(); 1414ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu mEntranceTransitionEnded = true; 1424ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu } 1434ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu 144255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu private void loadData() { 145255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu for (int i = 0; i < NUM_ROWS; ++i) { 146255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(sCardPresenter); 1473bd47bb01a2654f8399e89d227d40f99393b1844Dake Gu int index = 0; 148255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu for (int j = 0; j < REPEAT_PER_ROW; ++j) { 1493bd47bb01a2654f8399e89d227d40f99393b1844Dake Gu listRowAdapter.add("Hello world-" + (index++)); 1503bd47bb01a2654f8399e89d227d40f99393b1844Dake Gu listRowAdapter.add("This is a test-" + (index++)); 1513bd47bb01a2654f8399e89d227d40f99393b1844Dake Gu listRowAdapter.add("Android TV-" + (index++)); 1523bd47bb01a2654f8399e89d227d40f99393b1844Dake Gu listRowAdapter.add("Leanback-" + (index++)); 1533bd47bb01a2654f8399e89d227d40f99393b1844Dake Gu listRowAdapter.add("Hello world-" + (index++)); 1543bd47bb01a2654f8399e89d227d40f99393b1844Dake Gu listRowAdapter.add("Android TV-" + (index++)); 1553bd47bb01a2654f8399e89d227d40f99393b1844Dake Gu listRowAdapter.add("Leanback-" + (index++)); 1563bd47bb01a2654f8399e89d227d40f99393b1844Dake Gu listRowAdapter.add("GuidedStepFragment-" + (index++)); 157255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu } 158255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu HeaderItem header = new HeaderItem(i, "Row " + i); 159255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu mRowsAdapter.add(new ListRow(header, listRowAdapter)); 160255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu } 161255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu } 162255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 163255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu private final class ItemViewClickedListener implements OnItemViewClickedListener { 164255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu @Override 165255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item, 166255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu RowPresenter.ViewHolder rowViewHolder, Row row) { 167255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu Log.i(TAG, "onItemClicked: " + item + " row " + row); 168255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu } 169255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu } 170d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata 171d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata public VerticalGridView getGridView() { 172d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata return getRowsFragment().getVerticalGridView(); 173d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata } 174255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu} 175