HeadersFragment.java revision a8a3b898da49324e83ea32c3f08776a481312166
155c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout/* 255c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout * Copyright (C) 2014 The Android Open Source Project 355c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout * 455c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 555c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout * in compliance with the License. You may obtain a copy of the License at 655c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout * 755c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout * http://www.apache.org/licenses/LICENSE-2.0 855c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout * 955c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout * Unless required by applicable law or agreed to in writing, software distributed under the License 1055c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 1155c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout * or implied. See the License for the specific language governing permissions and limitations under 1255c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout * the License. 1355c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout */ 1455c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout 1555c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stoutpackage android.support.v17.leanback.app; 1655c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout 1755c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stoutimport android.support.v17.leanback.R; 1855c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stoutimport android.support.v17.leanback.widget.FocusHighlightHelper; 1955c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stoutimport android.support.v17.leanback.widget.ItemBridgeAdapter; 2055c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stoutimport android.support.v17.leanback.widget.Presenter; 2155c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stoutimport android.support.v17.leanback.widget.PresenterSelector; 2255c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stoutimport android.support.v17.leanback.widget.OnItemSelectedListener; 2355c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stoutimport android.support.v17.leanback.widget.Row; 2455c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stoutimport android.view.View; 2555c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stoutimport android.view.ViewGroup; 2655c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout 2755c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout/** 2855c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout * An internal fragment containing a list of row headers. 2955c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout */ 30a8a3b898da49324e83ea32c3f08776a481312166Tim Kilbournpublic class HeadersFragment extends BaseRowFragment { 3155c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout private HeaderPresenter mHeaderPresenter; 3255c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout private OnItemSelectedListener mOnItemSelectedListener; 3355c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout 34a8a3b898da49324e83ea32c3f08776a481312166Tim Kilbourn public HeadersFragment() { 3555c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout mHeaderPresenter = new HeaderPresenter(); 3655c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout setPresenterSelector(new PresenterSelector() { 3755c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout @Override 3855c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout public Presenter getPresenter(Object item) { 3955c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout return mHeaderPresenter; 4055c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout } 4155c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout }); 4255c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout } 4355c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout 4455c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout public void setOnHeaderClickListener(HeaderPresenter.OnHeaderClickListener listener) { 4555c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout mHeaderPresenter.setOnHeaderClickListener(listener); 4655c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout } 4755c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout 4855c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout public void setOnItemSelectedListener(OnItemSelectedListener listener) { 4955c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout mOnItemSelectedListener = listener; 5055c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout } 5155c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout 5255c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout @Override 5355c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout protected void onRowSelected(ViewGroup parent, View view, int position, long id) { 5455c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout if (mOnItemSelectedListener != null) { 5555c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout Row row = (Row) getAdapter().get(position); 5655c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout mOnItemSelectedListener.onItemSelected(null, row); 5755c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout } 5855c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout } 5955c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout 6055c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout @Override 6155c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout protected int getLayoutResourceId() { 62a8a3b898da49324e83ea32c3f08776a481312166Tim Kilbourn return R.layout.lb_headers_fragment; 6355c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout } 6455c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout 6555c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout @Override 6655c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout protected void updateAdapter() { 6755c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout super.updateAdapter(); 6855c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout ItemBridgeAdapter adapter = getBridgeAdapter(); 6955c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout if (adapter != null) { 7055c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout FocusHighlightHelper.setupHeaderItemFocusHighlight(adapter); 7155c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout } 7255c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout } 7355c9ee4b612ffc7b4632b1e4b7b7ab4900cd47c7Craig Stout} 74