給Recyclerview添加ITEM的點擊事件

主要入手點:自定的Adapter中自定義的ViewHolder,持有每個Item的的所有界面元素。Item的點擊事件可通過view的OnClick來實現。如果我們要在Activity中監聽到item的點擊,需要在Adapter中定義一個回調接口。如下:

public interface OnItemClickListener{
    void onItemClick(View view, int position);//該方法回調到activity或fragment中做相應操作
}

繼續在Adapter中實例出一個OnItemClickListener itemClickListener,當activity中new出一個adapter時,調用setOnItemClickListener方法,

就傳入一個OnItemClickListener。

  private OnItemClickListener itemClickListener;

     

  public void setOnItemClickListener(OnItemClickListener onItemClickListener ){
        this.itemClickListener=onItemClickListener;
    }
接下來在ViewHolder類中將adapter的itemClickListener傳入到ViewHolder構造方法中,我們知道ViewHolder本可以實現view的點擊事件,在OnClick中我們便實現了回調。
  public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        public TextView mTextView;
        private OnItemClickListener mitemClickListener;

        public ViewHolder(View view,OnItemClickListener itemClickListener) {
            super(view);
            mTextView = (TextView) view.findViewById(R.id.area_item_tv);
            this.mitemClickListener=itemClickListener;
            view.setOnClickListener(this);
        }

        @Override
        public void onClick(View view) {
            if (mitemClickListener != null) {
                mitemClickListener.onItemClick(view,getPosition());
            }
        }
    }
那麼在activity或fragment中
adapter=new MyAdapter(dataList);
recyclerView.setAdapter(adapter);
 adapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                //定義相應的事件邏輯
            }
        });






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章