在RecycleView适配器中实现对多种ViewHolder类型的视图点击 [英] Implement view clicks on multiple ViewHolder types in RecycleView adapter

查看:74
本文介绍了在RecycleView适配器中实现对多种ViewHolder类型的视图点击的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在按照此答案(使用抽象的bind())中的建议实现多个ViewHolders.我当前的AdapterViewHolder看起来像:

I am implementing multiple ViewHolders as suggested in this answer which uses an abstract bind(). My current Adapter and ViewHolder looks likes:

// MyAdapter.java

{adapter code}

public static abstract class MyViewHolder extends RecyclerView.ViewHolder {

    public MyViewHolder(View itemView) {
        super(itemView);
    }

    protected abstract void bind(MyModel item);
}

// ViewHolder1.java
public class ViewHolder1 extends MyAdapter.MyViewHolder implements View.OnClickListener {

    TextView textView;

    public ViewHolder1(View itemView) {
        super(itemView);
        textView = itemView.findViewById(R.id.textView);
        textView.setOnClickListener(this);
    }

    @Override
    protected void bind(MyModel item) {
        textView.setText(item.getText());
    }

    @Override
    public void onClick(View view) {
        //pass the current item position back to adapter
    }
}

如何将单击项的位置从此处传递回适配器.我不想在bind()中设置onClickListener(),因为在滚动RecyclerView时它将被多次调用.

How can I pass the position of the clicked item from here back to the adapter. I don't want set onClickListener() inside bind() because it would then be called multiple times while my RecyclerView is scrolled.

推荐答案

    @Override
        public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
              viewHolder.btnPlus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // btn plus 
                }
            });

            viewHolder.btnMinus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                  // button minus
                }
            });

        }
 public class ViewHolder extends RecyclerView.ViewHolder
    {
        Button btnPlus, btnMinus;   
        public ViewHolder(@NonNull View itemView)
        {
            super(itemView);
            btnPlus = itemView.findViewById(R.id.plusbutton);
            btnMinus = itemView.findViewById(R.id.minusbtn);

        }
    }

这篇关于在RecycleView适配器中实现对多种ViewHolder类型的视图点击的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆