ControlButtonPresenterSelector.java revision 7ab1edf2b49f3cdcb9db7a1c60d0dc1e17a9aef7
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 */ 14package android.support.v17.leanback.widget; 15 16import android.support.v17.leanback.R; 17import android.view.LayoutInflater; 18import android.view.View; 19import android.view.ViewGroup; 20import android.widget.ImageView; 21 22/** 23 * ControlButtonPresenterSelector displays primary and secondary 24 * controls for a {@link PlaybackControlsRow}. 25 * 26 * Binds to items of type {@link Action}. 27 */ 28public class ControlButtonPresenterSelector extends PresenterSelector { 29 30 private final Presenter mPrimaryPresenter = 31 new ControlButtonPresenter(R.layout.lb_control_button_primary); 32 private final Presenter mSecondaryPresenter = 33 new ControlButtonPresenter(R.layout.lb_control_button_secondary); 34 35 /** 36 * Returns the presenter for primary controls. 37 */ 38 public Presenter getPrimaryPresenter() { 39 return mPrimaryPresenter; 40 } 41 42 /** 43 * Returns the presenter for secondary controls. 44 */ 45 public Presenter getSecondaryPresenter() { 46 return mSecondaryPresenter; 47 } 48 49 /** 50 * Always returns the presenter for primary controls. 51 */ 52 public Presenter getPresenter(Object item) { 53 return mPrimaryPresenter; 54 } 55 56 static class ActionViewHolder extends Presenter.ViewHolder { 57 ImageView mIcon; 58 View mFocusableView; 59 60 public ActionViewHolder(View view) { 61 super(view); 62 mIcon = (ImageView) view.findViewById(R.id.icon); 63 mFocusableView = view.findViewById(R.id.button); 64 } 65 } 66 67 static class ControlButtonPresenter extends Presenter { 68 private int mLayoutResourceId; 69 70 ControlButtonPresenter(int layoutResourceId) { 71 mLayoutResourceId = layoutResourceId; 72 } 73 74 @Override 75 public ViewHolder onCreateViewHolder(ViewGroup parent) { 76 View v = LayoutInflater.from(parent.getContext()) 77 .inflate(mLayoutResourceId, parent, false); 78 return new ActionViewHolder(v); 79 } 80 81 @Override 82 public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) { 83 Action action = (Action) item; 84 ActionViewHolder vh = (ActionViewHolder) viewHolder; 85 vh.mIcon.setImageDrawable(action.getIcon()); 86 } 87 88 @Override 89 public void onUnbindViewHolder(Presenter.ViewHolder viewHolder) { 90 ActionViewHolder vh = (ActionViewHolder) viewHolder; 91 vh.mIcon.setImageDrawable(null); 92 } 93 94 @Override 95 public void setOnClickListener(Presenter.ViewHolder viewHolder, 96 View.OnClickListener listener) { 97 ((ActionViewHolder) viewHolder).mFocusableView.setOnClickListener(listener); 98 } 99 } 100} 101