1b86a6c2c71514e0cb693597a955e224811b90f96Dake Gu// CHECKSTYLE:OFF Generated code
2b86a6c2c71514e0cb693597a955e224811b90f96Dake Gu/* This file is auto-generated from VerticalGridSupportFragment.java.  DO NOT MODIFY. */
3b86a6c2c71514e0cb693597a955e224811b90f96Dake Gu
4739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout/*
5739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Copyright (C) 2014 The Android Open Source Project
6739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout *
7739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
8739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * in compliance with the License. You may obtain a copy of the License at
9739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout *
10739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * http://www.apache.org/licenses/LICENSE-2.0
11739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout *
12739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Unless required by applicable law or agreed to in writing, software distributed under the License
13739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * or implied. See the License for the specific language governing permissions and limitations under
15739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * the License.
16739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */
17ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.leanback.app;
18739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout
192452cde3b8d7cbe62f6eb2fbcbcf9a02448d6891Dake Guimport android.os.Bundle;
208619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikasimport android.util.Log;
218619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikasimport android.view.LayoutInflater;
228619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikasimport android.view.View;
238619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikasimport android.view.ViewGroup;
248619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikas
25ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.R;
26ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.transition.TransitionHelper;
27ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.util.StateMachine.State;
28ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.BrowseFrameLayout;
29ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.ObjectAdapter;
30ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.OnChildLaidOutListener;
31ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.OnItemViewClickedListener;
32ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.OnItemViewSelectedListener;
33ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.Presenter;
34ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.Row;
35ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.RowPresenter;
36ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.leanback.widget.VerticalGridPresenter;
37739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout
38739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout/**
394c0f3062b5edd9750351068f46e5270bb220091dTim Kilbourn * A fragment for creating leanback vertical grids.
40739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout *
414c0f3062b5edd9750351068f46e5270bb220091dTim Kilbourn * <p>Renders a vertical grid of objects given a {@link VerticalGridPresenter} and
42739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * an {@link ObjectAdapter}.
439870cf8fc2cbe52e761b850f58d5ac26db26a4c8Dake Gu * @deprecated use {@link VerticalGridSupportFragment}
44739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */
459870cf8fc2cbe52e761b850f58d5ac26db26a4c8Dake Gu@Deprecated
46786ba352397f44022617411936515fc9eb28d23fDake Gupublic class VerticalGridFragment extends BaseFragment {
4760e00f895b6f4dd25f181f377adf98e0715be4b6Dake Gu    static final String TAG = "VerticalGF";
48f8a82a95a1a962ec05536f7196fcee0f1384a497Jake Wharton    static final boolean DEBUG = false;
49739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout
50739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    private ObjectAdapter mAdapter;
51739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    private VerticalGridPresenter mGridPresenter;
5299ec8b0cb375f7e5577ea3ec9f09e6ff7a95de0dAurimas Liutikas    VerticalGridPresenter.ViewHolder mGridViewHolder;
5399ec8b0cb375f7e5577ea3ec9f09e6ff7a95de0dAurimas Liutikas    OnItemViewSelectedListener mOnItemViewSelectedListener;
54947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu    private OnItemViewClickedListener mOnItemViewClickedListener;
55786ba352397f44022617411936515fc9eb28d23fDake Gu    private Object mSceneAfterEntranceTransition;
56739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    private int mSelectedPosition = -1;
57739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout
58dfb60d0af5d49da05c584d74245c616263f26b65Craig Stout    /**
5989097f67f988ebba714a95e10369665280db0c27Dake Gu     * State to setEntranceTransitionState(false)
6089097f67f988ebba714a95e10369665280db0c27Dake Gu     */
6189097f67f988ebba714a95e10369665280db0c27Dake Gu    final State STATE_SET_ENTRANCE_START_STATE = new State("SET_ENTRANCE_START_STATE") {
6289097f67f988ebba714a95e10369665280db0c27Dake Gu        @Override
6389097f67f988ebba714a95e10369665280db0c27Dake Gu        public void run() {
6489097f67f988ebba714a95e10369665280db0c27Dake Gu            setEntranceTransitionState(false);
6589097f67f988ebba714a95e10369665280db0c27Dake Gu        }
6689097f67f988ebba714a95e10369665280db0c27Dake Gu    };
6789097f67f988ebba714a95e10369665280db0c27Dake Gu
6889097f67f988ebba714a95e10369665280db0c27Dake Gu    @Override
6989097f67f988ebba714a95e10369665280db0c27Dake Gu    void createStateMachineStates() {
7089097f67f988ebba714a95e10369665280db0c27Dake Gu        super.createStateMachineStates();
7189097f67f988ebba714a95e10369665280db0c27Dake Gu        mStateMachine.addState(STATE_SET_ENTRANCE_START_STATE);
7289097f67f988ebba714a95e10369665280db0c27Dake Gu    }
7389097f67f988ebba714a95e10369665280db0c27Dake Gu
7489097f67f988ebba714a95e10369665280db0c27Dake Gu    @Override
7589097f67f988ebba714a95e10369665280db0c27Dake Gu    void createStateMachineTransitions() {
7689097f67f988ebba714a95e10369665280db0c27Dake Gu        super.createStateMachineTransitions();
7789097f67f988ebba714a95e10369665280db0c27Dake Gu        mStateMachine.addTransition(STATE_ENTRANCE_ON_PREPARED,
7889097f67f988ebba714a95e10369665280db0c27Dake Gu                STATE_SET_ENTRANCE_START_STATE, EVT_ON_CREATEVIEW);
7989097f67f988ebba714a95e10369665280db0c27Dake Gu    }
8089097f67f988ebba714a95e10369665280db0c27Dake Gu
8189097f67f988ebba714a95e10369665280db0c27Dake Gu    /**
82dfb60d0af5d49da05c584d74245c616263f26b65Craig Stout     * Sets the grid presenter.
83739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout     */
84739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    public void setGridPresenter(VerticalGridPresenter gridPresenter) {
85739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout        if (gridPresenter == null) {
86739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout            throw new IllegalArgumentException("Grid presenter may not be null");
87739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout        }
88739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout        mGridPresenter = gridPresenter;
89d586ba8825b418d9589436725bfdead30f0dc075Dake Gu        mGridPresenter.setOnItemViewSelectedListener(mViewSelectedListener);
90947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu        if (mOnItemViewClickedListener != null) {
91947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu            mGridPresenter.setOnItemViewClickedListener(mOnItemViewClickedListener);
92947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu        }
93739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    }
94739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout
95739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    /**
96739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout     * Returns the grid presenter.
97739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout     */
98739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    public VerticalGridPresenter getGridPresenter() {
99739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout        return mGridPresenter;
100739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    }
101739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout
102739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    /**
103739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout     * Sets the object adapter for the fragment.
104739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout     */
105739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    public void setAdapter(ObjectAdapter adapter) {
106739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout        mAdapter = adapter;
107739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout        updateAdapter();
108739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    }
109739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout
110739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    /**
111739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout     * Returns the object adapter.
112739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout     */
113739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    public ObjectAdapter getAdapter() {
114739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout        return mAdapter;
115739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    }
116739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout
117d586ba8825b418d9589436725bfdead30f0dc075Dake Gu    final private OnItemViewSelectedListener mViewSelectedListener =
118947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu            new OnItemViewSelectedListener() {
119e34cae48707e70442aca13e1b4ab55757292828dDake Gu        @Override
120947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu        public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item,
121947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu                RowPresenter.ViewHolder rowViewHolder, Row row) {
122e34cae48707e70442aca13e1b4ab55757292828dDake Gu            int position = mGridViewHolder.getGridView().getSelectedPosition();
123d586ba8825b418d9589436725bfdead30f0dc075Dake Gu            if (DEBUG) Log.v(TAG, "grid selected position " + position);
124d586ba8825b418d9589436725bfdead30f0dc075Dake Gu            gridOnItemSelected(position);
125947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu            if (mOnItemViewSelectedListener != null) {
126947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu                mOnItemViewSelectedListener.onItemSelected(itemViewHolder, item,
127947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu                        rowViewHolder, row);
128947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu            }
129e34cae48707e70442aca13e1b4ab55757292828dDake Gu        }
130e34cae48707e70442aca13e1b4ab55757292828dDake Gu    };
131e34cae48707e70442aca13e1b4ab55757292828dDake Gu
132d586ba8825b418d9589436725bfdead30f0dc075Dake Gu    final private OnChildLaidOutListener mChildLaidOutListener =
133d586ba8825b418d9589436725bfdead30f0dc075Dake Gu            new OnChildLaidOutListener() {
134d586ba8825b418d9589436725bfdead30f0dc075Dake Gu        @Override
135d586ba8825b418d9589436725bfdead30f0dc075Dake Gu        public void onChildLaidOut(ViewGroup parent, View view, int position, long id) {
136d586ba8825b418d9589436725bfdead30f0dc075Dake Gu            if (position == 0) {
137d586ba8825b418d9589436725bfdead30f0dc075Dake Gu                showOrHideTitle();
138d586ba8825b418d9589436725bfdead30f0dc075Dake Gu            }
139d586ba8825b418d9589436725bfdead30f0dc075Dake Gu        }
140d586ba8825b418d9589436725bfdead30f0dc075Dake Gu    };
141d586ba8825b418d9589436725bfdead30f0dc075Dake Gu
142739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    /**
143739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout     * Sets an item selection listener.
144947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu     */
145947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu    public void setOnItemViewSelectedListener(OnItemViewSelectedListener listener) {
146947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu        mOnItemViewSelectedListener = listener;
147947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu    }
148947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu
14999ec8b0cb375f7e5577ea3ec9f09e6ff7a95de0dAurimas Liutikas    void gridOnItemSelected(int position) {
150e34cae48707e70442aca13e1b4ab55757292828dDake Gu        if (position != mSelectedPosition) {
151e34cae48707e70442aca13e1b4ab55757292828dDake Gu            mSelectedPosition = position;
152d586ba8825b418d9589436725bfdead30f0dc075Dake Gu            showOrHideTitle();
153d586ba8825b418d9589436725bfdead30f0dc075Dake Gu        }
154d586ba8825b418d9589436725bfdead30f0dc075Dake Gu    }
155d586ba8825b418d9589436725bfdead30f0dc075Dake Gu
15699ec8b0cb375f7e5577ea3ec9f09e6ff7a95de0dAurimas Liutikas    void showOrHideTitle() {
157d586ba8825b418d9589436725bfdead30f0dc075Dake Gu        if (mGridViewHolder.getGridView().findViewHolderForAdapterPosition(mSelectedPosition)
158d586ba8825b418d9589436725bfdead30f0dc075Dake Gu                == null) {
159d586ba8825b418d9589436725bfdead30f0dc075Dake Gu            return;
160d586ba8825b418d9589436725bfdead30f0dc075Dake Gu        }
161d586ba8825b418d9589436725bfdead30f0dc075Dake Gu        if (!mGridViewHolder.getGridView().hasPreviousViewInSameRow(mSelectedPosition)) {
162e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            showTitle(true);
163e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        } else {
164e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout            showTitle(false);
165e34cae48707e70442aca13e1b4ab55757292828dDake Gu        }
166e34cae48707e70442aca13e1b4ab55757292828dDake Gu    }
167739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout
168739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    /**
169739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout     * Sets an item clicked listener.
170947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu     */
171947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu    public void setOnItemViewClickedListener(OnItemViewClickedListener listener) {
172947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu        mOnItemViewClickedListener = listener;
173947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu        if (mGridPresenter != null) {
174947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu            mGridPresenter.setOnItemViewClickedListener(mOnItemViewClickedListener);
175947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu        }
176947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu    }
177947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu
178947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu    /**
179947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu     * Returns the item clicked listener.
180947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu     */
181947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu    public OnItemViewClickedListener getOnItemViewClickedListener() {
182947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu        return mOnItemViewClickedListener;
183947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu    }
184947dbf076cd019e3c26217fbc7aa21e860d68044Dake Gu
185739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    @Override
186739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    public View onCreateView(LayoutInflater inflater, ViewGroup container,
187739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout            Bundle savedInstanceState) {
188e34cae48707e70442aca13e1b4ab55757292828dDake Gu        ViewGroup root = (ViewGroup) inflater.inflate(R.layout.lb_vertical_grid_fragment,
189e34cae48707e70442aca13e1b4ab55757292828dDake Gu                container, false);
190a373804d10f93a9488adc35cf6ce44dce09b3778Dake Gu        ViewGroup gridFrame = (ViewGroup) root.findViewById(R.id.grid_frame);
191a373804d10f93a9488adc35cf6ce44dce09b3778Dake Gu        installTitleView(inflater, gridFrame, savedInstanceState);
192684f4a94f6f55b2abc5ed2677dfdfc9501dd6407susnata        getProgressBarManager().setRootView(root);
1939020c0aec57b4e8994d66b7cd1a89c225e9bfa11Craig Stout
19489097f67f988ebba714a95e10369665280db0c27Dake Gu        ViewGroup gridDock = (ViewGroup) root.findViewById(R.id.browse_grid_dock);
195739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout        mGridViewHolder = mGridPresenter.onCreateViewHolder(gridDock);
196739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout        gridDock.addView(mGridViewHolder.view);
197d586ba8825b418d9589436725bfdead30f0dc075Dake Gu        mGridViewHolder.getGridView().setOnChildLaidOutListener(mChildLaidOutListener);
198739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout
1998403619efebe94666c0615c3fc85080a303acf80Dake Gu        mSceneAfterEntranceTransition = TransitionHelper.createScene(gridDock, new Runnable() {
200786ba352397f44022617411936515fc9eb28d23fDake Gu            @Override
201786ba352397f44022617411936515fc9eb28d23fDake Gu            public void run() {
202786ba352397f44022617411936515fc9eb28d23fDake Gu                setEntranceTransitionState(true);
203786ba352397f44022617411936515fc9eb28d23fDake Gu            }
204786ba352397f44022617411936515fc9eb28d23fDake Gu        });
205786ba352397f44022617411936515fc9eb28d23fDake Gu
206739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout        updateAdapter();
20789097f67f988ebba714a95e10369665280db0c27Dake Gu        return root;
208739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    }
209739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout
210e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    private void setupFocusSearchListener() {
211e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        BrowseFrameLayout browseFrameLayout = (BrowseFrameLayout) getView().findViewById(
212e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout                R.id.grid_frame);
213e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        browseFrameLayout.setOnFocusSearchListener(getTitleHelper().getOnFocusSearchListener());
214e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout    }
215e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout
216739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    @Override
217739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    public void onStart() {
218739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout        super.onStart();
219e7246ef136ed686d8caf339d4d1fd8e37b499c6aCraig Stout        setupFocusSearchListener();
220739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    }
221739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout
222739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    @Override
223739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    public void onDestroyView() {
224739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout        super.onDestroyView();
225739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout        mGridViewHolder = null;
226739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    }
227739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout
228739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    /**
229739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout     * Sets the selected item position.
230739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout     */
231739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    public void setSelectedPosition(int position) {
232739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout        mSelectedPosition = position;
233739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout        if(mGridViewHolder != null && mGridViewHolder.getGridView().getAdapter() != null) {
234739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout            mGridViewHolder.getGridView().setSelectedPositionSmooth(position);
235739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout        }
236739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    }
237739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout
238739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    private void updateAdapter() {
239739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout        if (mGridViewHolder != null) {
240739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout            mGridPresenter.onBindViewHolder(mGridViewHolder, mAdapter);
241739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout            if (mSelectedPosition != -1) {
242739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout                mGridViewHolder.getGridView().setSelectedPosition(mSelectedPosition);
243739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout            }
244739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout        }
245739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout    }
246786ba352397f44022617411936515fc9eb28d23fDake Gu
247786ba352397f44022617411936515fc9eb28d23fDake Gu    @Override
248786ba352397f44022617411936515fc9eb28d23fDake Gu    protected Object createEntranceTransition() {
249b86a6c2c71514e0cb693597a955e224811b90f96Dake Gu        return TransitionHelper.loadTransition(FragmentUtil.getContext(VerticalGridFragment.this),
250786ba352397f44022617411936515fc9eb28d23fDake Gu                R.transition.lb_vertical_grid_entrance_transition);
251786ba352397f44022617411936515fc9eb28d23fDake Gu    }
252786ba352397f44022617411936515fc9eb28d23fDake Gu
253786ba352397f44022617411936515fc9eb28d23fDake Gu    @Override
254786ba352397f44022617411936515fc9eb28d23fDake Gu    protected void runEntranceTransition(Object entranceTransition) {
2558403619efebe94666c0615c3fc85080a303acf80Dake Gu        TransitionHelper.runTransition(mSceneAfterEntranceTransition, entranceTransition);
256786ba352397f44022617411936515fc9eb28d23fDake Gu    }
257786ba352397f44022617411936515fc9eb28d23fDake Gu
258786ba352397f44022617411936515fc9eb28d23fDake Gu    void setEntranceTransitionState(boolean afterTransition) {
259786ba352397f44022617411936515fc9eb28d23fDake Gu        mGridPresenter.setEntranceTransitionState(mGridViewHolder, afterTransition);
260786ba352397f44022617411936515fc9eb28d23fDake Gu    }
261739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout}
262