menuitem的选项隐藏吗?

时间:2019-05-12 15:47:41

标签: android menuitem

public class yeniAdapter extends RecyclerView.Adapter<yeniAdapter.MyViewHolder> {
    ArrayList<Urun> urunListesi;
    private Context mContext;
    private OnItemClickListener mListener;

    public yeniAdapter(Context context, List<Urun> urunListesi) {
        mContext = context;
        this.urunListesi = (ArrayList<Urun>) urunListesi;
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View v = LayoutInflater.from(mContext).inflate(R.layout.custom_satir, parent, false);
        MyViewHolder holder = new MyViewHolder(v);
        return holder;

    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {

        Urun urunBilgileri = urunListesi.get(position);
        String yorumyapanId=urunBilgileri.getKisiId();
        holder.kisiIsim.setText(urunBilgileri.getKisiAd());
        holder.urunYorum.setText(urunBilgileri.getUrunYorum());

    }

    @Override
    public int getItemCount() {
        return urunListesi.size();
    }

    class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener,
    View.OnCreateContextMenuListener, MenuItem.OnMenuItemClickListener{

        TextView kisiIsim,urunYorum;


        public MyViewHolder(View itemView) {
            super(itemView);

            kisiIsim = (TextView) itemView.findViewById(R.id.ad);
            urunYorum = (TextView) itemView.findViewById(R.id.yorum);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (mListener != null) {
                        int position = getAdapterPosition();
                        if (position != RecyclerView.NO_POSITION) {
                            mListener.onItemClick(position);
                        }
                    }
                }
            });
            itemView.setOnClickListener(this);
            itemView.setOnCreateContextMenuListener(this);

        }

        @Override
        public boolean onMenuItemClick(MenuItem item) {

            if (mListener != null) {
                int position = getAdapterPosition();
                if (position != RecyclerView.NO_POSITION) {

                    switch (item.getItemId()) {
                        case 1:
                            mListener.onWhatEverClick(position);
                            return true;
                        case 2:
                            mListener.duzenleClick(position);
                            return true;
                    }
                }
            }
            return false;
        }

        @Override
        public void onClick(View v) {
            if (mListener != null) {
                int position = getAdapterPosition();
                if (position != RecyclerView.NO_POSITION) {
                    mListener.onItemClick(position);
                }
            }
        }


        @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {

            menu.setHeaderTitle("Ne Yapmak İstiyorsun?");
            MenuItem doWhatever = menu.add(Menu.NONE, 1, 1, "Seç");
            MenuItem duzenle = menu.add(Menu.NONE, 2, 2, "Düzenle");

            doWhatever.setOnMenuItemClickListener(this);
            duzenle.setOnMenuItemClickListener(this);
        }

        }


    public interface OnItemClickListener {

        void onItemClick(int position);

        void onWhatEverClick(int position);

        void duzenleClick(int position);
    }

    public void setOnItemClickListener(OnItemClickListener listener) {
        mListener = listener;
    }

    }

我有一个用户可以登录的应用程序。用户可以发表评论。在“注释”页面上,如果注释属于该人本人,那么他将在Menuitem中看到从customm适配器获取的选项。如果发表评论的人不是他本人,则单击该评论将看到另一个选项,其他选项将被隐藏。我该怎么办?

2 个答案:

答案 0 :(得分:0)

我不知道您是否真的需要菜单适配器,这种菜单的常见方式是在res / menu下的xml文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
            android:id="@+id/menu_edit_recipe"
            android:title="Edit"/>

    <item
            android:id="@+id/option_one"
            android:title="Option"></item>


</menu>

在您的活动中,只需重写此方法,检查您的状况,然后设置可见性

override fun onPrepareOptionsMenu(menu: Menu?): Boolean {
        val yourMenuItem = menu!!.findItem(R.id.option_one)

        val yourCondition = true

        yourMenuItem.isVisible = !yourCondition


        return true
    }

答案 1 :(得分:0)

在添加菜单项之后,您可以尝试在onCreateContextMenu中使用以下行吗?

  doWhatever.setVisible(false);

menu.findItem(1).setVisible(false);

添加项目后,您可以在onCreateContextMenu中放置一个条件,并放置以上各行(二者之一)以隐藏上下文菜单的菜单项。请尝试让我知道。