今天解决的是recyclerview点击事件
实现功能是点击每个不同的item呈现不同的界面
思路:从 单个item点击的时候 拿到 师傅的 id 然后通过intent传值并且跳转到详情页面
id 在点击的时候 itemclicklistener 已经 通过 data数据传过去了
在adapter设置点击事件回调接口:
public void setOnItemClickListener(OnItemClickListener mOnItemClickListener) {
this.mOnItemClickListener = mOnItemClickListener;
}
public interface OnItemClickListener {
void onItemClick(View view,int position,MasterBean.Master data);
}
其中MasterBean.Master 为对应item的集合数据
ViewHolder的代码如下:
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
TextView masterName;
TextView masterjobName;
TextView masterGoodRate;
ImageView masterHead;
TextView masterevaluationSum;
public ViewHolder(View view){
super(view);
view.setOnClickListener(this);
masterName = (TextView)view.findViewById(R.id.master_name);
masterjobName = (TextView)view.findViewById(R.id.master_recyclerview_item_jobName);
masterGoodRate = (TextView)view.findViewById(R.id.master_recyclerview_item_goodRate);
masterHead = (ImageView)view.findViewById(R.id.master_recyclerview_item_head);
masterevaluationSum = (TextView)view.findViewById(R.id.master_recyclerview_item_evaluationSum);
}
@Override
public void onClick(View v) {
int position = getAdapterPosition();
if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(v, position, mMasterList.get(position));
}
}
}
其中尤为关键的代码是view.setOnClickListener(this); 这表示为adapter添加点击监听事件
接下来的onClick方法就是给mOnItemClickListener进行赋值
最后在实现类中设置adapter的点击事件,如下:
adapter = new MasterAdapter(getContext(), mMasterList);
adapter.setOnItemClickListener(new MasterAdapter.OnItemClickListener<MasterBean.Master>() {
@Override
public void onItemClick(View view, int position, MasterBean.Master data) {
mExcellentMasterId = data.id;
Intent intent = new Intent(getContext(), MasterDetailsActivity.class);
intent.putExtra("MasterId",mExcellentMasterId);
startActivity(intent);
Log.d(TAG, "onItemClick: " + mExcellentMasterId);
}
});
Intent的主要作用是为跳转的界面进行传值,然后在跳转的界面中进行接收并且赋值,从而让界面达到不同的内容