1816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko/*
2816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Copyright (C) 2015 The Android Open Source Project
3816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko *
4816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Licensed under the Apache License, Version 2.0 (the "License");
5816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * you may not use this file except in compliance with the License.
6816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * You may obtain a copy of the License at
7816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko *
8816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko *      http://www.apache.org/licenses/LICENSE-2.0
9816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko *
10816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Unless required by applicable law or agreed to in writing, software
11816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * distributed under the License is distributed on an "AS IS" BASIS,
12816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * See the License for the specific language governing permissions and
14816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * limitations under the License.
15816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko */
16816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
17816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkopackage com.android.tv.menu;
18816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
19816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.content.Context;
20816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.R;
21816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.menu.ItemListRowView.ItemListAdapter;
22816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
23816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko/**
2495961816a768da387f0b5523cf4363ace2044089Nick Chalko * A menu item which is used to represents the list of the items. A list will be displayed by a
2595961816a768da387f0b5523cf4363ace2044089Nick Chalko * HorizontalGridView with cards, so an adapter for the GridView is necessary.
26816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko */
27816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko@SuppressWarnings("rawtypes")
28816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkopublic class ItemListRow extends MenuRow {
29816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    private ItemListAdapter mAdapter;
30816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
3195961816a768da387f0b5523cf4363ace2044089Nick Chalko    public ItemListRow(
3295961816a768da387f0b5523cf4363ace2044089Nick Chalko            Context context,
3395961816a768da387f0b5523cf4363ace2044089Nick Chalko            Menu menu,
3495961816a768da387f0b5523cf4363ace2044089Nick Chalko            int titleResId,
3595961816a768da387f0b5523cf4363ace2044089Nick Chalko            int itemHeightResId,
36816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            ItemListAdapter adapter) {
3707b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko        this(context, menu, context.getString(titleResId), itemHeightResId, adapter);
38816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
39816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
4095961816a768da387f0b5523cf4363ace2044089Nick Chalko    public ItemListRow(
4195961816a768da387f0b5523cf4363ace2044089Nick Chalko            Context context,
4295961816a768da387f0b5523cf4363ace2044089Nick Chalko            Menu menu,
4395961816a768da387f0b5523cf4363ace2044089Nick Chalko            String title,
4495961816a768da387f0b5523cf4363ace2044089Nick Chalko            int itemHeightResId,
45816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko            ItemListAdapter adapter) {
4607b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko        super(context, menu, title, itemHeightResId);
47816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mAdapter = adapter;
48816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
49816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
5095961816a768da387f0b5523cf4363ace2044089Nick Chalko    /** Returns the adapter. */
51816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    public ItemListAdapter<?> getAdapter() {
52816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        return mAdapter;
53816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
54816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
55816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    public void setAdapter(ItemListAdapter<?> adapter) {
56816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mAdapter = adapter;
57816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
58816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
59816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    @Override
60816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    public void update() {
61816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        mAdapter.update();
62816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
63816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
64816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    @Override
65816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    public boolean isVisible() {
66816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        return mAdapter.getItemCount() > 0;
67816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
68816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
69816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    @Override
70816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    public int getLayoutResId() {
71816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        return R.layout.item_list;
72816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
73816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko
74816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    @Override
75816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    public String getId() {
76816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko        return this.getClass().getName();
77816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko    }
78816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko}
79