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; 20bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.view.LayoutInflater; 21bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.view.View; 22bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.view.ViewGroup; 23bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 24bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport java.util.ArrayList; 25bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 26bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell/** 2720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Base class for MenuPresenters that have a consistent container view and item views. Behaves 2820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * similarly to an AdapterView in that existing item views will be reused if possible when items 2920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * change. 3089208232f3b5d1451408d787872504a190bc7ee0Chris Banes * 3189208232f3b5d1451408d787872504a190bc7ee0Chris Banes * @hide 32bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell */ 33bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellpublic abstract class BaseMenuPresenter implements MenuPresenter { 3420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns 35ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani protected Context mSystemContext; 36ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani protected Context mContext; 37ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani protected MenuBuilder mMenu; 38ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani protected LayoutInflater mSystemInflater; 39ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani protected LayoutInflater mInflater; 40ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani private Callback mCallback; 41ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 42ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani private int mMenuLayoutRes; 43ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani private int mItemLayoutRes; 44ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 45ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani protected MenuView mMenuView; 46ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 47ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani private int mId; 48ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 49ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani /** 50ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * Construct a new BaseMenuPresenter. 51ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * 52ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param context Context for generating system-supplied views 53ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param menuLayoutRes Layout resource ID for the menu container view 54ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param itemLayoutRes Layout resource ID for a single item view 55ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani */ 56ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public BaseMenuPresenter(Context context, int menuLayoutRes, int itemLayoutRes) { 57ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mSystemContext = context; 58ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mSystemInflater = LayoutInflater.from(context); 59ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mMenuLayoutRes = menuLayoutRes; 60ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mItemLayoutRes = itemLayoutRes; 61ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 62ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 63ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani @Override 64ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public void initForMenu(Context context, MenuBuilder menu) { 65ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mContext = context; 66ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mInflater = LayoutInflater.from(mContext); 67ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mMenu = menu; 68ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 69ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 70ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public MenuView getMenuView(ViewGroup root) { 71ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani if (mMenuView == null) { 72ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mMenuView = (MenuView) mSystemInflater.inflate(mMenuLayoutRes, root, false); 73ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mMenuView.initialize(mMenu); 74ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani updateMenuView(true); 75bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell } 76ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 77ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return mMenuView; 78ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 79ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 80ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani /** 81ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * Reuses item views when it can 82ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani */ 83ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public void updateMenuView(boolean cleared) { 84ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani final ViewGroup parent = (ViewGroup) mMenuView; 8520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns if (parent == null) { 8620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns return; 8720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns } 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); 104ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani // itemView.jumpDrawablesToCurrentState(); 105ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani // Animation API: Not available on API < 11 106ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 107ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani if (itemView != convertView) { 108ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani addItemView(itemView, childIndex); 109ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 110ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani childIndex++; 111ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 112ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 113ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 114ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 115ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani // Remove leftover views. 116ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani while (childIndex < parent.getChildCount()) { 117ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani if (!filterLeftoverView(parent, childIndex)) { 118ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani childIndex++; 119ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 120ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 121ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 122ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 123ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani /** 124ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * Add an item view at the given index. 125ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * 126ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param itemView View to add 127ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param childIndex Index within the parent to insert at 128ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani */ 129ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani protected void addItemView(View itemView, int childIndex) { 130ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani final ViewGroup currentParent = (ViewGroup) itemView.getParent(); 131ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani if (currentParent != null) { 132ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani currentParent.removeView(itemView); 133ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 134ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani ((ViewGroup) mMenuView).addView(itemView, childIndex); 135ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 136ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 137ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani /** 138ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * Filter the child view at index and remove it if appropriate. 139ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * 140ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param parent Parent to filter from 141ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param childIndex Index to filter 142ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @return true if the child view at index was removed 143ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani */ 144ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani protected boolean filterLeftoverView(ViewGroup parent, int childIndex) { 145ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani parent.removeViewAt(childIndex); 146ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return true; 147ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 148ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 149ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public void setCallback(Callback cb) { 150ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mCallback = cb; 151ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 152ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 153ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani /** 154ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * Create a new item view that can be re-bound to other item data later. 155ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * 156ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @return The new item view 157ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani */ 158ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public MenuView.ItemView createItemView(ViewGroup parent) { 159ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return (MenuView.ItemView) mSystemInflater.inflate(mItemLayoutRes, parent, false); 160ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 161ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 162ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani /** 16320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Prepare an item view for use. See AdapterView for the basic idea at work here. This may 16420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * require creating a new item view, but well-behaved implementations will re-use the view 16520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * passed as convertView if present. The returned view will be populated with data from the item 16620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * parameter. 167ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * 168ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param item Item to present 169ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param convertView Existing view to reuse 170ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param parent Intended parent view - use for inflation. 171ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @return View that presents the requested menu item 172ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani */ 173ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public View getItemView(MenuItemImpl item, View convertView, ViewGroup parent) { 174ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani MenuView.ItemView itemView; 175ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani if (convertView instanceof MenuView.ItemView) { 176ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani itemView = (MenuView.ItemView) convertView; 177ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } else { 178ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani itemView = createItemView(parent); 179ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 180ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani bindItemView(item, itemView); 181ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return (View) itemView; 182ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 183ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 184ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani /** 185ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * Bind item data to an existing item view. 186ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * 187ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param item Item to bind 188ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param itemView View to populate with item data 189ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani */ 190ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public abstract void bindItemView(MenuItemImpl item, MenuView.ItemView itemView); 191ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 192ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani /** 193ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * Filter item by child index and item data. 194ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * 195ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param childIndex Indended presentation index of this item 196ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @param item Item to present 197ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani * @return true if this item should be included in this menu presentation; false otherwise 198ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani */ 199ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public boolean shouldIncludeItem(int childIndex, MenuItemImpl item) { 200ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return true; 201ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 202ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 203ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { 204ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani if (mCallback != null) { 205ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mCallback.onCloseMenu(menu, allMenusAreClosing); 206ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 207ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 208ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 209ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public boolean onSubMenuSelected(SubMenuBuilder menu) { 210ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani if (mCallback != null) { 211ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return mCallback.onOpenSubMenu(menu); 212ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 213ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return false; 214ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 215ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 216ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public boolean flagActionItems() { 217ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return false; 218ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 219ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 220ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public boolean expandItemActionView(MenuBuilder menu, MenuItemImpl item) { 221ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return false; 222ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 223ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 224ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public boolean collapseItemActionView(MenuBuilder menu, MenuItemImpl item) { 225ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return false; 226ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 227ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 228ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public int getId() { 229ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani return mId; 230ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 231ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani 232ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani public void setId(int id) { 233ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani mId = id; 234ced50ab7536cd3d3573f03310fc899f10c414d37Anirudh Dewani } 235bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell} 236