【问题标题】:Multiple onClickListener in a RecyclerViewRecyclerView 中的多个 onClickListener
【发布时间】:2015-08-14 16:08:32
【问题描述】:

我有一个包含多个项目的 RecyclerView。每个项目都有多个按钮来执行一些操作。 所以我已经为我的 RecyclerViewAdapter 实现了 View.OnClickListener。

但似乎我只能在 onCreateViewHolder 函数中设置一个 OnClickListener。

有谁知道在我的 RecyclerView 的每个项目中有多个按钮的解决方案?

【问题讨论】:

  • 让您的 ViewHolder 实现 OnClickListener,然后您可以设置多个 setOnClickListener 调用
  • 在哪里可以设置 setOnClickListener ?在我的 ViewHolder 类中?
  • 是的,只需调用 v0.setOnClickListener(this); v1.setOnClickListener(this);等

标签: android onclicklistener android-recyclerview


【解决方案1】:

您可以实现 OnClickListener 并在 onClick 函数内部实现每个动作。像这样。

static class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    Button button1;
    Button button2;
    Button button3;
    Button button4;

    public MyViewHolder(View itemView) {
        super(itemView);
        button1 = (Button) itemView.findViewById(R.id.button1);
        button2 = (Button) itemView.findViewById(R.id.button2);
        button3 = (Button) itemView.findViewById(R.id.button3);
        button4 = (Button) itemView.findViewById(R.id.button4);

        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);
        button4.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        if (view == button1) {
            // button1 action
        } else if (view == button2) {
            // button2 action
        } else if (view == button3) {
            // button3 action
        } else if (view == button4) {
            // button4 action
        }
    }
}

【讨论】:

  • 感谢您的回答,但我已经尝试过这种方式,并且我找到了如何访问我的持有人的位置,
  • 你可以创建自己的onclicklistener并在构造函数中传递位置
  • @SocialSupaCrew 它正在工作,但您正在创建 FOUR OnClickListeners,这是为了什么?只需让 MyViewHolder 实现 OnClickListener 并创建 ONE 通用监听器
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多