FileDocCategorySizeDatePackage
ListMenuItemView.javaAPI DocAndroid 1.5 API7732Wed May 06 22:41:56 BST 2009com.android.internal.view.menu

ListMenuItemView

public class ListMenuItemView extends android.widget.LinearLayout implements MenuView.ItemView
The item view for each item in the ListView-based MenuViews.

Fields Summary
private MenuItemImpl
mItemData
private android.widget.ImageView
mIconView
private android.widget.RadioButton
mRadioButton
private android.widget.TextView
mTitleView
private android.widget.CheckBox
mCheckBox
private android.widget.TextView
mShortcutView
private android.graphics.drawable.Drawable
mBackground
private int
mTextAppearance
private android.content.Context
mTextAppearanceContext
private int
mMenuType
Constructors Summary
public ListMenuItemView(android.content.Context context, android.util.AttributeSet attrs, int defStyle)

        super(context, attrs);
    
        TypedArray a =
            context.obtainStyledAttributes(
                attrs, com.android.internal.R.styleable.MenuView, defStyle, 0);
        
        mBackground = a.getDrawable(com.android.internal.R.styleable.MenuView_itemBackground);
        mTextAppearance = a.getResourceId(com.android.internal.R.styleable.
                                          MenuView_itemTextAppearance, -1);
        mTextAppearanceContext = context;
        
        a.recycle();
    
public ListMenuItemView(android.content.Context context, android.util.AttributeSet attrs)

        this(context, attrs, 0);
    
Methods Summary
public MenuItemImplgetItemData()

        return mItemData;
    
public voidinitialize(MenuItemImpl itemData, int menuType)

        mItemData = itemData;
        mMenuType = menuType;

        setVisibility(itemData.isVisible() ? View.VISIBLE : View.GONE);
        
        setTitle(itemData.getTitleForItemView(this));
        setCheckable(itemData.isCheckable());
        setShortcut(itemData.shouldShowShortcut(), itemData.getShortcut());
        setIcon(itemData.getIcon());
        setEnabled(itemData.isEnabled());
    
private voidinsertCheckBox()

        LayoutInflater inflater = mItemData.getLayoutInflater(mMenuType);
        mCheckBox =
                (CheckBox) inflater.inflate(com.android.internal.R.layout.list_menu_item_checkbox,
                this, false);
        addView(mCheckBox);
    
private voidinsertIconView()

        LayoutInflater inflater = mItemData.getLayoutInflater(mMenuType);
        mIconView = (ImageView) inflater.inflate(com.android.internal.R.layout.list_menu_item_icon,
                this, false);
        addView(mIconView, 0);
    
private voidinsertRadioButton()

        LayoutInflater inflater = mItemData.getLayoutInflater(mMenuType);
        mRadioButton =
                (RadioButton) inflater.inflate(com.android.internal.R.layout.list_menu_item_radio,
                this, false);
        addView(mRadioButton);
    
protected voidonFinishInflate()

        super.onFinishInflate();
        
        setBackgroundDrawable(mBackground);
        
        mTitleView = (TextView) findViewById(com.android.internal.R.id.title);
        if (mTextAppearance != -1) {
            mTitleView.setTextAppearance(mTextAppearanceContext,
                                         mTextAppearance);
        }
        
        mShortcutView = (TextView) findViewById(com.android.internal.R.id.shortcut);
    
public booleanprefersCondensedTitle()

        return false;
    
public voidsetCheckable(boolean checkable)

        
        if (!checkable && mRadioButton == null && mCheckBox == null) {
            return;
        }
        
        if (mRadioButton == null) {
            insertRadioButton();
        }
        if (mCheckBox == null) {
            insertCheckBox();
        }
        
        // Depending on whether its exclusive check or not, the checkbox or
        // radio button will be the one in use (and the other will be otherCompoundButton)
        final CompoundButton compoundButton;
        final CompoundButton otherCompoundButton; 

        if (mItemData.isExclusiveCheckable()) {
            compoundButton = mRadioButton;
            otherCompoundButton = mCheckBox;
        } else {
            compoundButton = mCheckBox;
            otherCompoundButton = mRadioButton;
        }
        
        if (checkable) {
            compoundButton.setChecked(mItemData.isChecked());
            
            final int newVisibility = checkable ? VISIBLE : GONE;
            if (compoundButton.getVisibility() != newVisibility) {
                compoundButton.setVisibility(newVisibility);
            }
            
            // Make sure the other compound button isn't visible
            if (otherCompoundButton.getVisibility() != GONE) {
                otherCompoundButton.setVisibility(GONE);
            }
        } else {
            mCheckBox.setVisibility(GONE);
            mRadioButton.setVisibility(GONE);
        }
    
public voidsetChecked(boolean checked)

        CompoundButton compoundButton;
        
        if (mItemData.isExclusiveCheckable()) {
            if (mRadioButton == null) {
                insertRadioButton();
            }
            compoundButton = mRadioButton;
        } else {
            if (mCheckBox == null) {
                insertCheckBox();
            }
            compoundButton = mCheckBox;
        }
        
        compoundButton.setChecked(checked);
    
public voidsetIcon(android.graphics.drawable.Drawable icon)

        
        if (!mItemData.shouldShowIcon(mMenuType)) {
            return;
        }
        
        if (mIconView == null && icon == null) {
            return;
        }
        
        if (mIconView == null) {
            insertIconView();
        }
        
        if (icon != null) {
            mIconView.setImageDrawable(icon);

            if (mIconView.getVisibility() != VISIBLE) {
                mIconView.setVisibility(VISIBLE);
            }
        } else {
            mIconView.setVisibility(GONE);
        }
    
public voidsetShortcut(boolean showShortcut, char shortcutKey)

        final int newVisibility = (showShortcut && mItemData.shouldShowShortcut())
                ? VISIBLE : GONE;

        if (newVisibility == VISIBLE) {
            mShortcutView.setText(mItemData.getShortcutLabel());
        }

        if (mShortcutView.getVisibility() != newVisibility) {
            mShortcutView.setVisibility(newVisibility);
        }
    
public voidsetTitle(java.lang.CharSequence title)

        if (title != null) {
            mTitleView.setText(title);
            
            if (mTitleView.getVisibility() != VISIBLE) mTitleView.setVisibility(VISIBLE);
        } else {
            if (mTitleView.getVisibility() != GONE) mTitleView.setVisibility(GONE);
        }
    
public booleanshowsIcon()

        return false;