【问题标题】:Dialog Open on Recycler view Row button click对话框在 Recycler 视图上打开 行按钮单击
【发布时间】:2017-10-04 16:00:47
【问题描述】:

在回收站视图中,我单击添加到购物车的按钮,打开一个对话框。 在 Recycler 视图适配器中

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

    holder.addtocart.setOnClickListener((Mp3HindiLandingActivity) context);
}

在我的活动中(Mp3HindiLandingActivity)

          @Override
         public void onClick(final View v) {
    switch (v.getId()) { case R.id.addtocart:
            PopupMenu popup = new PopupMenu(ctx, v);
            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    switch (item.getItemId()) {
                        case R.id.menu1:

                            Toast.makeText(v.getContext(), "FriendRequest", Toast.LENGTH_LONG).show();
                            return true;
                        case R.id.menu2:
                            Toast.makeText(v.getContext(), "Block | Hide ", Toast.LENGTH_LONG).show();
                            return true;
                        default:
                            return false;
                    }
                }
            });
            popup.getMenuInflater().inflate(R.menu.menu, popup.getMenu());
            popup.show();

            break;`
           }}

它在 addtocart 图标下方显示菜单,但我需要根据所附图像具有不同背景的菜单项?

请告诉我这将如何实施

【问题讨论】:

  • 给我们您的源代码,我们可以找到解决方案。但只是发布一个问题并假设任何人都会为你编码并不是我们在这里做的方式

标签: android


【解决方案1】:

你可以试试这个。

paletteViewHolder.btncart.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(final View v) {
                    PopupMenu popup = new PopupMenu(paletteViewHolder.imgpopup.getContext(), v);
                    // This activity implements OnMenuItemClickListener .
                    //popup.setOnMenuItemClickListener ((OnMenuItemClickListener) this);
                    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                        @Override
                        public boolean onMenuItemClick(MenuItem item) {
                            switch (item.getItemId()) {
                                case R.id.friendrequest:
                                    Toast.makeText(v.getContext(), "FriendRequest", Toast.LENGTH_LONG).show();
                                    return true;
                                case R.id.blockhide:
                                    Toast.makeText(v.getContext(), "Block | Hide ", Toast.LENGTH_LONG).show();
                                    return true;
                                case R.id.followunfollow:
                                    Toast.makeText(v.getContext(), "Follow/UnFollow", Toast.LENGTH_LONG).show();
                                    return true;
                                default:
                                    return false;
                            }
                            //return false;
                        }
                    });
                    popup.inflate(R.menu.menu);
                    popup.show();
                }
            });

//在menu下面创建menu.xml文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/menu1"
        android:title="menu1"/>
    <item
        android:id="@+id/menu2"
        android:title="menu2"/>
    <item
        android:id="@+id/menu3"
        android:title="menu3"/>
</menu>

对你有帮助。

【讨论】:

  • @Atul Mavani 我可以在弹出菜单中设置图像
  • 谢谢你的回答..它工作得很好..我在弹出菜单中设置图像成功..为你+1。
  • @Atul Mavani 我们如何根据附图自定义弹出菜单的设计?
【解决方案2】:

首先创建一个像下面这样的内部类 ViewHolder:

private class MyViewHolder extends RecyclerView.ViewHolder {
    public Button btnCart;

    public MyViewHolder(View view) {
        super(view);
        btnCart = (Button) view.findViewById(R.id.btnCart);
    }
}

然后在您的适配器中覆盖 onBindViewHolder(您的适配器扩展 RecyclerView.Adapter)。

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

        holder.btnCart.setOnClickListener(new View.OnClickListener() {
           public void onClick(View v) {
               // call the opening of your dialog here
           }
        });

    }

【讨论】:

  • 我在这里实现同样的事情..我知道如何制作点击事件,我想知道的是如何制作带有图像的自定义对话框。如上图所示..
  • Dang Nguyen 我试过了,但对话框显示在屏幕顶部,但根据功能,对话框应该位于购物车图标的下方。它应该适用于每一行
  • 创建一个弹出菜单,因为@Atul Mavani 的帮助会起作用。您可以在此处获取有关如何制作带有图标的弹出菜单的更多详细信息:stackoverflow.com/questions/15454995/popupmenu-with-icons
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
  • 2018-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
相关资源
最近更新 更多