如何从ListView_ItemClick设置ActionBar按钮enabled = true?

时间:2015-04-27 17:00:43

标签: c# android listview xamarin android-actionbar

我有这段代码:

public override bool OnCreateOptionsMenu(IMenu menu)
        {
            MenuInflater.Inflate(Resource.Drawable.actionbar_produtos, menu);
            menu.FindItem (Resource.Id.edita).SetEnabled (false);
            menu.FindItem (Resource.Id.apaga).SetEnabled (false);
            return base.OnCreateOptionsMenu(menu);
        }

        public override bool OnOptionsItemSelected(IMenuItem item)
        {

            switch (item.ItemId)
            {

            case Resource.Id.search:
                //Search icon has been clicked

                mSearch.Focusable=false;
                mSearch.Visibility = ViewStates.Visible;
                if (mIsAnimating)
                {
                    return true;
                }

                if (!mAnimatedDown)
                {
                    //Listview is up
                    MyAnimation anim = new MyAnimation(ListViewProdutos, ListViewProdutos.Height - mSearch.Height);
                    anim.Duration = 500;
                    ListViewProdutos.StartAnimation(anim);
                    anim.AnimationStart += anim_AnimationStartDown;
                    anim.AnimationEnd += anim_AnimationEndDown;
                    mContainer.Animate().TranslationYBy(mSearch.Height).SetDuration(500).Start();


                }

                else
                {
                    //Listview is down
                    MyAnimation anim = new MyAnimation(ListViewProdutos, ListViewProdutos.Height + mSearch.Height);
                    anim.Duration = 500;
                    ListViewProdutos.StartAnimation(anim);
                    anim.AnimationStart += anim_AnimationStartUp;
                    anim.AnimationEnd += anim_AnimationEndUp;
                    mContainer.Animate().TranslationYBy(-mSearch.Height).SetDuration(500).Start();


                }

                mAnimatedDown = !mAnimatedDown;
                return true;

            case Resource.Id.adiciona:

                FragmentTransaction transaction = FragmentManager.BeginTransaction();

                dialog_Adicionar_produto dialog_adicionar = new dialog_Adicionar_produto ();
                dialog_adicionar.Show (transaction, "dialog fragment");

                dialog_adicionar.mOnAdicionarComplete += dialog_adicionar_mOnAdicionarComplete;



                return true;

            case Resource.Id.edita:

                FragmentTransaction transaction2 = FragmentManager.BeginTransaction ();




                dialog_Editar_produto dialog_editar = new dialog_Editar_produto (array);
                dialog_editar.Show (transaction2, "dialog fragment");

                dialog_editar.mOnEditarComplete += dialog_editar_mOnAdicionarComplete;



                return true;

            case Resource.Id.apaga:


                mItems.RemoveAt (index );
                adapter = new MyListViewAdapter_produtos (this,Resource.Layout.listview_row_produtos, mItems);
                ListViewProdutos.Adapter = adapter;


                return true;

            default:
                return base.OnOptionsItemSelected(item);
            }
        }

我希望当用户点击(列表视图)的项目时,那些" apaga"和" edita"转为启用=真。

这里是listview_ItemCLick:

protected void ListViewProdutos_ItemClick (object sender, AdapterView.ItemClickEventArgs e)
        {
            index = e.Position;
            adapter.setSelectedIndex(e.Position);

            array [0] = mItems [e.Position].Nome;
            array [1] = Convert.ToString(mItems [e.Position].Preco);
            array [2] = mItems [e.Position].Unidade;
            array [3] = mItems [e.Position].Categoria;

            ListViewProdutos.Adapter = adapter;


        }

如何从这里访问菜单项?

以下是布局图片:

enter image description here

1 个答案:

答案 0 :(得分:1)

我做对了。

我要做的是:

在OnCreate()

之前声明IMenuItem item;

然后改变这个:

public override bool OnCreateOptionsMenu(IMenu menu)
        {
            MenuInflater.Inflate(Resource.Drawable.actionbar_produtos, menu);
            menu.FindItem (Resource.Id.edita).SetEnabled (false);
            menu.FindItem (Resource.Id.apaga).SetEnabled (false);
            item = menu.FindItem (Resource.Id.edita);

            return base.OnCreateOptionsMenu(menu);
        }

在ListView_ItemClick中,我把它放在:item.SetEnabled (true);

感谢您的帮助!