VerticalGridFragment.java revision 739e3805bf2785e6773aede5e2e1643f537305f9
1739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout/* 2739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Copyright (C) 2014 The Android Open Source Project 3739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * 4739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * in compliance with the License. You may obtain a copy of the License at 6739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * 7739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * http://www.apache.org/licenses/LICENSE-2.0 8739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * 9739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Unless required by applicable law or agreed to in writing, software distributed under the License 10739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * or implied. See the License for the specific language governing permissions and limitations under 12739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * the License. 13739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 14739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutpackage android.support.v17.leanback.app; 15739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 16739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.support.v17.leanback.R; 17739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.support.v17.leanback.widget.VerticalGridPresenter; 18739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.support.v17.leanback.widget.ObjectAdapter; 19739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.support.v17.leanback.widget.OnItemClickedListener; 20739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.support.v17.leanback.widget.OnItemSelectedListener; 21739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.support.v17.leanback.widget.Presenter; 22739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.support.v17.leanback.widget.PresenterSelector; 23739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.support.v17.leanback.widget.RowPresenter; 24739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.support.v17.leanback.widget.SearchOrbView; 25739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.support.v17.leanback.widget.VerticalGridView; 26739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.util.Log; 27739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.app.Fragment; 28739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.graphics.drawable.Drawable; 29739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.os.Bundle; 30739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.view.LayoutInflater; 31739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.view.View; 32739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.view.ViewGroup; 33739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.widget.ImageView; 34739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutimport android.widget.TextView; 35739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 36739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout/** 37739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Leanback fragment for a vertical grid. 38739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * 39739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Renders a vertical grid of objects given a {@link VerticalGridPresenter} and 40739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * an {@link ObjectAdapter}. 41739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 42739e3805bf2785e6773aede5e2e1643f537305f9Craig Stoutpublic class VerticalGridFragment extends Fragment { 43739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private static final String TAG = "VerticalGridFragment"; 44739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private static boolean DEBUG = false; 45739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 46739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private Params mParams; 47739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private ObjectAdapter mAdapter; 48739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private VerticalGridPresenter mGridPresenter; 49739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private VerticalGridPresenter.ViewHolder mGridViewHolder; 50739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private OnItemSelectedListener mOnItemSelectedListener; 51739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private OnItemClickedListener mOnItemClickedListener; 52739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private int mSelectedPosition = -1; 53739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 54739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private ImageView mBadgeView; 55739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private TextView mTitleView; 56739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private ViewGroup mBrowseTitle; 57739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private SearchOrbView mSearchOrbView; 58739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 59739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public static class Params { 60739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private String mTitle; 61739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private Drawable mBadgeDrawable; 62739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 63739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 64739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Sets the badge image. 65739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 66739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public void setBadgeImage(Drawable drawable) { 67739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mBadgeDrawable = drawable; 68739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 69739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 70739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 71739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Returns the badge image. 72739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 73739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public Drawable getBadgeImage() { 74739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout return mBadgeDrawable; 75739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 76739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 77739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 78739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Sets a title for the browse fragment. 79739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 80739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public void setTitle(String title) { 81739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mTitle = title; 82739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 83739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 84739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 85739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Returns the title for the browse fragment. 86739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 87739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public String getTitle() { 88739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout return mTitle; 89739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 90739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 91739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 92739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 93739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Set fragment parameters. 94739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 95739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public void setParams(Params params) { 96739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mParams = params; 97739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout setBadgeDrawable(mParams.mBadgeDrawable); 98739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout setTitle(mParams.mTitle); 99739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 100739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 101739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 102739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Returns fragment parameters. 103739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 104739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public Params getParams() { 105739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout return mParams; 106739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 107739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 108739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 109739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Set the grid presenter. 110739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 111739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public void setGridPresenter(VerticalGridPresenter gridPresenter) { 112739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout if (gridPresenter == null) { 113739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout throw new IllegalArgumentException("Grid presenter may not be null"); 114739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 115739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mGridPresenter = gridPresenter; 116739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout if (mOnItemSelectedListener != null) { 117739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mGridPresenter.setOnItemSelectedListener(mOnItemSelectedListener); 118739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 119739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout if (mOnItemClickedListener != null) { 120739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mGridPresenter.setOnItemClickedListener(mOnItemClickedListener); 121739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 122739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 123739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 124739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 125739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Returns the grid presenter. 126739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 127739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public VerticalGridPresenter getGridPresenter() { 128739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout return mGridPresenter; 129739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 130739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 131739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 132739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Sets the object adapter for the fragment. 133739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 134739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public void setAdapter(ObjectAdapter adapter) { 135739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mAdapter = adapter; 136739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout updateAdapter(); 137739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 138739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 139739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 140739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Returns the object adapter. 141739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 142739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public ObjectAdapter getAdapter() { 143739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout return mAdapter; 144739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 145739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 146739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 147739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Sets an item selection listener. 148739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 149739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public void setOnItemSelectedListener(OnItemSelectedListener listener) { 150739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mOnItemSelectedListener = listener; 151739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout if (mGridPresenter != null) { 152739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mGridPresenter.setOnItemSelectedListener(mOnItemSelectedListener); 153739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 154739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 155739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 156739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout // TODO: getitemselectedlistener? 157739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 158739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 159739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Sets an item clicked listener. 160739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 161739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public void setOnItemClickedListener(OnItemClickedListener listener) { 162739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mOnItemClickedListener = listener; 163739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout if (mGridPresenter != null) { 164739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mGridPresenter.setOnItemClickedListener(mOnItemClickedListener); 165739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 166739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 167739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 168739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 169739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Returns the item clicked listener. 170739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 171739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public OnItemClickedListener getOnItemClickedListener() { 172739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout return mOnItemClickedListener; 173739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 174739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 175739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private void setBadgeDrawable(Drawable drawable) { 176739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout if (mBadgeView == null) { 177739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout return; 178739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 179739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mBadgeView.setImageDrawable(drawable); 180739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout if (drawable != null) { 181739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mBadgeView.setVisibility(View.VISIBLE); 182739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } else { 183739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mBadgeView.setVisibility(View.GONE); 184739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 185739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 186739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 187739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private void setTitle(String title) { 188739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout if (mTitleView != null) { 189739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mTitleView.setText(title); 190739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 191739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 192739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 193739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout @Override 194739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public View onCreateView(LayoutInflater inflater, ViewGroup container, 195739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout Bundle savedInstanceState) { 196739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout View root = inflater.inflate(R.layout.lb_vertical_grid_fragment, container, false); 197739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 198739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mBrowseTitle = (ViewGroup) root.findViewById(R.id.browse_title_group); 199739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mBadgeView = (ImageView) mBrowseTitle.findViewById(R.id.browse_badge); 200739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mTitleView = (TextView) mBrowseTitle.findViewById(R.id.browse_title); 201739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mSearchOrbView = (SearchOrbView) mBrowseTitle.findViewById(R.id.browse_orb); 202739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 203739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout if (mParams != null) { 204739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout setBadgeDrawable(mParams.mBadgeDrawable); 205739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout setTitle(mParams.mTitle); 206739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 207739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 208739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout return root; 209739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 210739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 211739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout @Override 212739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public void onViewCreated(View view, Bundle savedInstanceState) { 213739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout ViewGroup gridDock = (ViewGroup) view.findViewById(R.id.browse_grid_dock); 214739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mGridViewHolder = mGridPresenter.onCreateViewHolder(gridDock); 215739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout gridDock.addView(mGridViewHolder.view); 216739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 217739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout updateAdapter(); 218739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 219739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 220739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout @Override 221739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public void onStart() { 222739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout super.onStart(); 223739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mGridViewHolder.getGridView().requestFocus(); 224739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 225739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 226739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout @Override 227739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public void onDestroyView() { 228739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout super.onDestroyView(); 229739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mGridViewHolder = null; 230739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 231739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 232739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout /** 233739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout * Sets the selected item position. 234739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout */ 235739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout public void setSelectedPosition(int position) { 236739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mSelectedPosition = position; 237739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout if(mGridViewHolder != null && mGridViewHolder.getGridView().getAdapter() != null) { 238739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mGridViewHolder.getGridView().setSelectedPositionSmooth(position); 239739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 240739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 241739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout 242739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout private void updateAdapter() { 243739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout if (mGridViewHolder != null) { 244739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mGridPresenter.onBindViewHolder(mGridViewHolder, mAdapter); 245739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout if (mSelectedPosition != -1) { 246739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout mGridViewHolder.getGridView().setSelectedPosition(mSelectedPosition); 247739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 248739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 249739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout } 250739e3805bf2785e6773aede5e2e1643f537305f9Craig Stout} 251