为 RecyclerView 项目添加底部菜单

Add a bottom menu for RecyclerView item

我有一个 recyclerview,右边有一个选项按钮,我想实现如下动画所示的效果:

我正在使用 this 作为我的参考,但我有一些断开连接。

首先我想知道我是否能做到这一点,因为我在将菜单添加到 recyclerview 时发现的每件事都在添加一个基本菜单弹出窗口,这不是我想要的。

我在从 viewholder 访问菜单时也有一些断开连接,我可以从我的 fragment 访问它,但我认为我需要从 viewholder 调用它所以我点击了哪一行来启动菜单。

如果我对实施考虑过多并且有更简单的方法,我愿意听取它。

我不确定我是否理解你想要什么,但是如果要在 recyclerview 的行项目中有一个按钮,以便在单击该按钮时从屏幕底部弹出一个抽屉,那么你应该只为 activity 使用普通的抽屉设置 (Navigation Drawer, Create a navigation drawer) 并将 OnClickListener 添加到行按钮(这可以在 onCreateViewHolder() 或持有人的构造函数)通过​​调用 openDrawer() 触发抽屉打开。注意做后者,你必须通过适配器构造函数将导航抽屉(DrawerLayout)传递到适配器(这意味着你的适配器需要一些东西来存储 DrawerLayout)。

所以

public class CustomAdaptor extends RecyclerView.Adapter<CustomViewHolder>{
        private Context mContext;
        private int mLayoutResourceId;
        private ArrayList<Item> items;
        private DrawerLayout drawer;

        public CustomAdaptor (Context context, int resource, ArrayList<Item> itemArray, DrawerLayout drawer) {
            this.mContext = context;
            this.mLayoutResourceId = resource;
            this.items = itemArray;
            this.drawer = drawer;
        }

        public CustomViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
           View view = LayoutInflater.from(mContext).inflate(mLayoutResourceId, parent, false);
           final CustomViewHolder holder = new CustomViewHolder(view);

           holder.mbutton.setOnClickListener(new OnClickListener() {
               @Override
               public void onClick(View view) {
                   //Check if drawer is null and if not then call
                   drawer.drawerOpen();
                }
           });
           return holder;
        }
}

其中 mButton 是 holder/row 中的按钮。请注意,我还没有对此进行测试,所以我可能会忘记一些事情。