为RecyclerView项目添加底部菜单

时间:2019-02-20 21:47:37

标签: android-recyclerview xamarin.android android-viewholder navigationview

我有一个recyclerview,它将在右侧具有一个选项按钮,我想实现以下动画:

desired result

我使用this作为参考,但是有些断开。

首先,我想知道是否可以执行此操作,因为在将菜单添加到recyclerview时发现的每件事都是在添加弹出的基本菜单,这不是我想要的。

从查看器访问菜单时,我也有些脱节,我可以从片段中访问它,但是我认为我需要从查看器中调用它,所以我单击了哪一行来启动菜单。

如果我过分考虑实现方式,并且有一种更简单的方法,那么我很乐意听。

1 个答案:

答案 0 :(得分:1)

不确定我是否了解您要的内容,但是如果要在recyclerview的行项中存在一个按钮,则只要单击该按钮,它就会从屏幕底部弹出一个抽屉,那么您应该仅对活动使用常规抽屉设置(Navigation DrawerCreate 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是固定器/行中的按钮。请注意,我尚未对此进行测试,因此可能有些东西我会忘记了。