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);
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章