RecycleView监听实现

第一种在adapter中添加listenner实现

listenner接口

public interface OnclickRecycle {
    void Onclick(View view, String data);
}

一:在onCreateViewHolder添加监听,但是这种方法没法传递position,getposition()方法应该是过时了。

public class LinearAdapter extends RecyclerView.Adapter<LinearAdapter.MyViewHolder> implements View.OnClickListener{

    private OnclickRecycle onclickRecycle=null;
    private Context context;

    private List<String> mDatas;
    public LinearAdapter(Context context){
        this.context=context;
    }

    public OnclickRecycle getOnclickRecycle() {
        return onclickRecycle;
    }

    public void setOnclickRecycle(OnclickRecycle onclickRecycle) {
        this.onclickRecycle = onclickRecycle;
    }



    public List<String> getmDatas() {
        return mDatas;
    }

    public void setmDatas(List<String> mDatas) {
        this.mDatas = mDatas;
    }



    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
      View v=  LayoutInflater.from(
                context).inflate(R.layout.item_home, parent,
                false);
        LinearAdapter.MyViewHolder holder = new LinearAdapter.MyViewHolder(v);
        v.setOnClickListener(this);
    //给这个View添加监听
        return holder;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        holder.tv.setText(mDatas.get(position));
        holder.itemView.setTag(mDatas.get(position));
    }



    @Override
    public int getItemCount() {
        return mDatas.size();
    }

    @Override
    public void onClick(View v) {
        if(onclickRecycle!=null){
            onclickRecycle.Onclick(v,(String)v.getTag());
        }
    }


    static class MyViewHolder extends RecyclerView.ViewHolder
    {

        TextView tv;

        public MyViewHolder(View view)
        {
            super(view);
            tv = (TextView) view.findViewById(R.id.id_num);
        }
    }
}

二:在onBindViewHolder中实现

public class LinearAdapter2 extends RecyclerView.Adapter<LinearAdapter2.MyViewHolder> {


    public OnclickRecycle onclickRecycle=null;
    private Context context;
    private List<String> mDatas;
    public LinearAdapter2(Context context){
        this.context=context;
    }


    public OnclickRecycle getOnclickRecycle() {
        return onclickRecycle;
    }

    public void setOnclickRecycle(OnclickRecycle onclickRecycle) {
        this.onclickRecycle = onclickRecycle;
    }
    public List<String> getmDatas() {
        return mDatas;
    }

    public void setmDatas(List<String> mDatas) {
        this.mDatas = mDatas;
    }



    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
      View v=  LayoutInflater.from(
                context).inflate(R.layout.item_home, parent,
                false);
        LinearAdapter2.MyViewHolder holder = new LinearAdapter2.MyViewHolder(v);


        return holder;
    }

    @Override
    public void onBindViewHolder(final MyViewHolder holder, final int position) {
        holder.tv.setText(mDatas.get(position));
        holder.itemView.setTag(mDatas.get(position));
        holder.tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               if(getOnclickRecycle()!=null){
                   getOnclickRecycle().Onclick(holder.tv,position+"");
               }
            }
        });
    }



    @Override
    public int getItemCount() {
        return mDatas.size();
    }



    static class MyViewHolder extends RecyclerView.ViewHolder
    {

        TextView tv;

        public MyViewHolder(View view)
        {
            super(view);
            tv = (TextView) view.findViewById(R.id.id_num);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值