HeadersFragment.java revision a8a3b898da49324e83ea32c3f08776a481312166
1/*
2 * Copyright (C) 2014 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5 * in compliance with the License. You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software distributed under the License
10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11 * or implied. See the License for the specific language governing permissions and limitations under
12 * the License.
13 */
14
15package android.support.v17.leanback.app;
16
17import android.support.v17.leanback.R;
18import android.support.v17.leanback.widget.FocusHighlightHelper;
19import android.support.v17.leanback.widget.ItemBridgeAdapter;
20import android.support.v17.leanback.widget.Presenter;
21import android.support.v17.leanback.widget.PresenterSelector;
22import android.support.v17.leanback.widget.OnItemSelectedListener;
23import android.support.v17.leanback.widget.Row;
24import android.view.View;
25import android.view.ViewGroup;
26
27/**
28 * An internal fragment containing a list of row headers.
29 */
30public class HeadersFragment extends BaseRowFragment {
31    private HeaderPresenter mHeaderPresenter;
32    private OnItemSelectedListener mOnItemSelectedListener;
33
34    public HeadersFragment() {
35        mHeaderPresenter = new HeaderPresenter();
36        setPresenterSelector(new PresenterSelector() {
37            @Override
38            public Presenter getPresenter(Object item) {
39                return mHeaderPresenter;
40            }
41        });
42    }
43
44    public void setOnHeaderClickListener(HeaderPresenter.OnHeaderClickListener listener) {
45        mHeaderPresenter.setOnHeaderClickListener(listener);
46    }
47
48    public void setOnItemSelectedListener(OnItemSelectedListener listener) {
49        mOnItemSelectedListener = listener;
50    }
51
52    @Override
53    protected void onRowSelected(ViewGroup parent, View view, int position, long id) {
54        if (mOnItemSelectedListener != null) {
55            Row row = (Row) getAdapter().get(position);
56            mOnItemSelectedListener.onItemSelected(null, row);
57        }
58    }
59
60    @Override
61    protected int getLayoutResourceId() {
62        return R.layout.lb_headers_fragment;
63    }
64
65    @Override
66    protected void updateAdapter() {
67        super.updateAdapter();
68        ItemBridgeAdapter adapter = getBridgeAdapter();
69        if (adapter != null) {
70            FocusHighlightHelper.setupHeaderItemFocusHighlight(adapter);
71        }
72    }
73}
74