如何在 android 中的适配器 class 中显示弹出菜单

How to display a pop menu in an adapter class in android

我是 android 开发的新手,我有一个使用适配器 class 填充的回收器视图。这里的问题是 在用户单击 textViews 时实现弹出菜单。我只能访问适配器 class 中的 textView,因为它没有 activity,所以我很难实现弹出菜单。我搜索了这个网站,发现了类似的链接,但他们的解决方案对我没有用。这就是我注册的原因,也许你们 me.I 已经尝试了两个晚上,但我似乎找不到解决问题的方法。在这个适配器 class 中实现弹出菜单时,我总是遇到错误,它似乎从来没有工作过,而且非常令人沮丧。

    public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    private List<String> values;

    public class ViewHolder extends RecyclerView.ViewHolder {
        public TextView txtHeader;
        public View layout;

        public ViewHolder(View v) {
            super(v);
            layout = v;
            txtHeader = (TextView) v.findViewById(R.id.postTitle);
        }
    }

    public void add(int position, String item) {
        values.add(position, item);
        notifyItemInserted(position);
    }

    public void remove(int position) {
        values.remove(position);
        notifyItemRemoved(position);
    }

    public MyAdapter(List<String> myDataset, Context context) {
        values = myDataset;
        this.context = context.getApplicationContext();
    }

    @Override
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View v = inflater.inflate(R.layout.postlayout2, parent, false);
        ViewHolder vh = new ViewHolder(v);
        return vh;
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {
        final String name = values.get(position);
        try {
            final String postTitle;
            postTitle = name;
            holder.txtHeader.setText(postTitle);

            // I would like to implement a popup menu display here
        } catch (Exception e) {
            Log.d("KOPe", "3: " + e.getMessage());
        }
    }

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

}

提前致谢。

ViewHolder class bind() 方法中使用它:

textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder alertDialog = new AlertDialog.Builder(textView.getContext());
                alertDialog.setTitle("Message");
                alertDialog.setMessage(Html.fromHtml("<small> successfully done </small>"));
                alertDialog.setNegativeButton("no",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        });
                alertDialog.setPositiveButton("yes",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                               //perform action
                                Log.d(TAG,"done");
                            }
                        });
                final AlertDialog alert = alertDialog.create();
                alert.show();
            }
        });