主要入手點:自定的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) {
//定義相應的事件邏輯
}
});