Recyclerview点击

Recyclerview Click

我创建了一个列表,我想实现一个 clickListener 但是点击没有被捕获的问题

    public static class MyViewHolder extends RecyclerView.ViewHolder
        implements View.OnClickListener {

    public TextView design, ip, port, number, id;

    public MyViewHolder(View view) {
        super(view);
        view.setOnClickListener(this);
        design = (TextView) view.findViewById(R.id.txt_device_designation);
        port = (TextView) view.findViewById(R.id.txt_device_port);
        ip = (TextView) view.findViewById(R.id.txt_device_ip);
        number = (TextView) view.findViewById(R.id.txt_device_number);
        id = (TextView) view.findViewById(R.id.txt_device_id);
    }

    @Override
    public void onClick(View v) {
        Log.i("Test", "Test");
    }
}

现在我想要如果我点击菜单图标,我想要一个菜单​​从底部出现 我设法点击了按钮和位置,但你能帮我调出菜单吗

My Screen

public MyViewHolder(View view) {
        super(view);
        view.setOnClickListener(this);
        design = (TextView) view.findViewById(R.id.txt_device_designation);
        port = (TextView) view.findViewById(R.id.txt_device_port);
        ip = (TextView) view.findViewById(R.id.txt_device_ip);
        number = (TextView) view.findViewById(R.id.txt_device_number);
        id = (TextView) view.findViewById(R.id.txt_device_id);
        imageViewContextMenu = (ImageView) view.findViewById(R.id.iv_context_menu);
        linearLayoutDeviceClick = (LinearLayout) view.findViewById(R.id.linearLayoutDeviceClick);

        imageViewContextMenu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.i("Test", String.valueOf(getPosition())); //Test succes
            }
        });

        linearLayoutDeviceClick.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.i("TestLayout", String.valueOf(getPosition())); //Test succes

            }
        });
    }

您必须在 findViewById 之后 setOnClickListener

  1. 如果你想创建点击整个项目你可以findViewById 你的 root-layout 比如 relativelayout 或 linearlayout 等,然后设置 onclicklistner
  2. 如果您想为特定视图创建点击,您可以findViewById您的视图然后设置 onclicklistner

将 onItemTouchListener 添加到您的回收站视图。

 mRecyclerView.addOnItemTouchListener(new RecyclerItemClickListener(mActivity, mRecyclerView, new RecyclerItemClickListener.OnItemClickListener() {
                    @Override
                    public void onItemClick(View view, int position)
                    {
                        ///////// add your task
                    }


                    });

您可以在 onBindViewHolder() 或您的 recyclerview 适配器的 onCreateViewHolder() 中执行您的点击侦听器。

@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
        //perform your operations here
        }
 });

}

其中 itemView 是您对 recyclerview.Use

中每个项目的视图
holder.buttonName.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
        //perform your operations here
        }
 });

}

在视图内执行按钮单击。