BrowseTestSupportFragment.java revision 7d7bf9541e0203ec67df0fe53367e2c126355b9e
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 */
16package android.support.v17.leanback.app;
17
18import android.os.Bundle;
19import android.os.Handler;
20import android.support.v17.leanback.widget.ArrayObjectAdapter;
21import android.support.v17.leanback.widget.HeaderItem;
22import android.support.v17.leanback.widget.ListRow;
23import android.support.v17.leanback.widget.ListRowPresenter;
24import android.support.v17.leanback.widget.OnItemViewClickedListener;
25import android.support.v17.leanback.widget.OnItemViewSelectedListener;
26import android.support.v17.leanback.widget.Presenter;
27import android.support.v17.leanback.widget.Row;
28import android.support.v17.leanback.widget.RowPresenter;
29import android.util.Log;
30import android.view.View;
31
32/**
33 * @hide from javadoc
34 */
35public 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
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
94    private void setupRows() {
95        ListRowPresenter lrp = new ListRowPresenter();
96
97        mRowsAdapter = new ArrayObjectAdapter(lrp);
98
99        setAdapter(mRowsAdapter);
100    }
101
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
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