опция menuitem скрыть? - PullRequest
0 голосов
/ 12 мая 2019
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 голосов
/ 12 мая 2019

Не могли бы вы попробовать использовать следующую строку в вашем onCreateContextMenu после добавления пунктов меню,

  doWhatever.setVisible(false);

или

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

Вы можете поместить условие в onCreateContextMenu после добавления элементов и разместить вышеуказанные строки (любую из них), чтобы скрыть пункт меню контекстного меню. Пожалуйста, попробуйте и дайте мне знать.

0 голосов
/ 12 мая 2019

Я не знаю, действительно ли вам нужен адаптер для вашего меню, общий способ для этого типа меню - это XML-файл в res / menu, который выглядит следующим образом:

<?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
    }
...