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