RecycleView监听实现

来源:互联网 发布:东莞东莞菲凡网络 编辑:程序博客网 时间:2024/06/06 09:27

第一种在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);        }    }}
1 1