1bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell/* 2bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * Copyright (C) 2011 The Android Open Source Project 3bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * 4bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * Licensed under the Apache License, Version 2.0 (the "License"); 5bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * you may not use this file except in compliance with the License. 6bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * You may obtain a copy of the License at 7bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * 8bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * http://www.apache.org/licenses/LICENSE-2.0 9bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * 10bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * Unless required by applicable law or agreed to in writing, software 11bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * distributed under the License is distributed on an "AS IS" BASIS, 12bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * See the License for the specific language governing permissions and 14bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * limitations under the License. 15bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell */ 16bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 17da10fdd1400ecfd8d7f2e55651dd528d0614dfc5Jeff Brownpackage android.support.v7.internal.view.menu; 18bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 19bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.content.Context; 20bc7c32772fbc966091181ce7fa933ca4083679acAdam Powellimport android.support.v4.view.ViewCompat; 21bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.view.LayoutInflater; 22bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.view.View; 23bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.view.ViewGroup; 24bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 25bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport java.util.ArrayList; 26bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 27bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell/** 2820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Base class for MenuPresenters that have a consistent container view and item views. Behaves 2920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * similarly to an AdapterView in that existing item views will be reused if possible when items 3020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * change. 3189208232f3b5d1451408d787872504a190bc7ee0Chris Banes * 3289208232f3b5d1451408d787872504a190bc7ee0Chris Banes * @hide 33bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell */ 34bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellpublic abstract class BaseMenuPresenter implements MenuPresenter { 3520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns 36ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani protected Context mSystemContext; 37ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani protected Context mContext; 38ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani protected MenuBuilder mMenu; 39ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani protected LayoutInflater mSystemInflater; 40ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani protected LayoutInflater mInflater; 41ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani private Callback mCallback; 42ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 43ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani private int mMenuLayoutRes; 44ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani private int mItemLayoutRes; 45ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 46ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani protected MenuView mMenuView; 47ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 48ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani private int mId; 49ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 50ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani /** 51ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * Construct a new BaseMenuPresenter. 52ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * 5349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * @param context Context for generating system-supplied views 54ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param menuLayoutRes Layout resource ID for the menu container view 55ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param itemLayoutRes Layout resource ID for a single item view 56ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani */ 57ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public BaseMenuPresenter(Context context, int menuLayoutRes, int itemLayoutRes) { 58ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mSystemContext = context; 59ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mSystemInflater = LayoutInflater.from(context); 60ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mMenuLayoutRes = menuLayoutRes; 61ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mItemLayoutRes = itemLayoutRes; 62ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 63ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 64ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani @Override 65ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public void initForMenu(Context context, MenuBuilder menu) { 66ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mContext = context; 67ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mInflater = LayoutInflater.from(mContext); 68ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mMenu = menu; 69ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 70ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 7149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes @Override 72ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public MenuView getMenuView(ViewGroup root) { 73ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani if (mMenuView == null) { 74ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mMenuView = (MenuView) mSystemInflater.inflate(mMenuLayoutRes, root, false); 75ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mMenuView.initialize(mMenu); 76ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani updateMenuView(true); 77bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell } 78ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 79ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return mMenuView; 80ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 81ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 82ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani /** 83ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * Reuses item views when it can 84ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani */ 85ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public void updateMenuView(boolean cleared) { 86ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani final ViewGroup parent = (ViewGroup) mMenuView; 8749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes if (parent == null) return; 88ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 89ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani int childIndex = 0; 90ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani if (mMenu != null) { 91ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mMenu.flagActionItems(); 92ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani ArrayList<MenuItemImpl> visibleItems = mMenu.getVisibleItems(); 93ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani final int itemCount = visibleItems.size(); 94ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani for (int i = 0; i < itemCount; i++) { 95ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani MenuItemImpl item = visibleItems.get(i); 96ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani if (shouldIncludeItem(childIndex, item)) { 97ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani final View convertView = parent.getChildAt(childIndex); 98ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani final MenuItemImpl oldItem = convertView instanceof MenuView.ItemView ? 9920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns ((MenuView.ItemView) convertView).getItemData() : null; 100ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani final View itemView = getItemView(item, convertView, parent); 101ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani if (item != oldItem) { 102ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani // Don't let old states linger with new data. 103ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani itemView.setPressed(false); 104bc7c32772fbc966091181ce7fa933ca4083679acAdam Powell ViewCompat.jumpDrawablesToCurrentState(itemView); 105ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 106ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani if (itemView != convertView) { 107ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani addItemView(itemView, childIndex); 108ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 109ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani childIndex++; 110ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 111ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 112ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 113ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 114ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani // Remove leftover views. 115ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani while (childIndex < parent.getChildCount()) { 116ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani if (!filterLeftoverView(parent, childIndex)) { 117ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani childIndex++; 118ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 119ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 120ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 121ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 122ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani /** 123ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * Add an item view at the given index. 124ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * 12549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * @param itemView View to add 126ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param childIndex Index within the parent to insert at 127ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani */ 128ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani protected void addItemView(View itemView, int childIndex) { 129ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani final ViewGroup currentParent = (ViewGroup) itemView.getParent(); 130ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani if (currentParent != null) { 131ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani currentParent.removeView(itemView); 132ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 133ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani ((ViewGroup) mMenuView).addView(itemView, childIndex); 134ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 135ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 136ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani /** 137ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * Filter the child view at index and remove it if appropriate. 13849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * @param parent Parent to filter from 139ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param childIndex Index to filter 140ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @return true if the child view at index was removed 141ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani */ 142ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani protected boolean filterLeftoverView(ViewGroup parent, int childIndex) { 143ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani parent.removeViewAt(childIndex); 144ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return true; 145ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 146ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 147ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public void setCallback(Callback cb) { 148ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mCallback = cb; 149ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 150ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 15149c78900da0d43140fb602431fb93212bd7f6c70Chris Banes public Callback getCallback() { 15249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes return mCallback; 15349c78900da0d43140fb602431fb93212bd7f6c70Chris Banes } 15449c78900da0d43140fb602431fb93212bd7f6c70Chris Banes 155ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani /** 156ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * Create a new item view that can be re-bound to other item data later. 157ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * 158ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @return The new item view 159ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani */ 160ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public MenuView.ItemView createItemView(ViewGroup parent) { 161ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return (MenuView.ItemView) mSystemInflater.inflate(mItemLayoutRes, parent, false); 162ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 163ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 164ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani /** 16549c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * Prepare an item view for use. See AdapterView for the basic idea at work here. 16649c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * This may require creating a new item view, but well-behaved implementations will 16749c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * re-use the view passed as convertView if present. The returned view will be populated 16849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * with data from the item parameter. 169ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * 17049c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * @param item Item to present 171ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param convertView Existing view to reuse 17249c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * @param parent Intended parent view - use for inflation. 173ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @return View that presents the requested menu item 174ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani */ 175ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public View getItemView(MenuItemImpl item, View convertView, ViewGroup parent) { 176ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani MenuView.ItemView itemView; 177ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani if (convertView instanceof MenuView.ItemView) { 178ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani itemView = (MenuView.ItemView) convertView; 179ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } else { 180ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani itemView = createItemView(parent); 181ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 182ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani bindItemView(item, itemView); 183ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return (View) itemView; 184ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 185ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 186ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani /** 187ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * Bind item data to an existing item view. 188ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * 18949c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * @param item Item to bind 190ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param itemView View to populate with item data 191ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani */ 192ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public abstract void bindItemView(MenuItemImpl item, MenuView.ItemView itemView); 193ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 194ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani /** 195ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * Filter item by child index and item data. 196ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * 197ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param childIndex Indended presentation index of this item 19849c78900da0d43140fb602431fb93212bd7f6c70Chris Banes * @param item Item to present 199ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @return true if this item should be included in this menu presentation; false otherwise 200ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani */ 201ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public boolean shouldIncludeItem(int childIndex, MenuItemImpl item) { 202ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return true; 203ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 204ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 205ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { 206ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani if (mCallback != null) { 207ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mCallback.onCloseMenu(menu, allMenusAreClosing); 208ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 209ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 210ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 211ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public boolean onSubMenuSelected(SubMenuBuilder menu) { 212ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani if (mCallback != null) { 213ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return mCallback.onOpenSubMenu(menu); 214ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 215ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return false; 216ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 217ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 218ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public boolean flagActionItems() { 219ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return false; 220ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 221ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 222ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public boolean expandItemActionView(MenuBuilder menu, MenuItemImpl item) { 223ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return false; 224ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 225ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 226ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public boolean collapseItemActionView(MenuBuilder menu, MenuItemImpl item) { 227ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return false; 228ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 229ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 230ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public int getId() { 231ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return mId; 232ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 233ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 234ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public void setId(int id) { 235ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mId = id; 236ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 237bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell} 238