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