在互联网上的教程中,他们在RecyclerView的Adapter中设置了OnClickListener,它们以两种方式定义它:在ViewHolder内部或在BindViewHolder内部.
我的问题是哪一个是更好的方法,请推荐任何其他方法(如果有的话)
1)在ViewHolder中:
public static class ViewHolder extends RecyclerView.ViewHolder { public ViewHolder(View itemView) { super(itemView); tvSrc = (TextView) itemView.findViewById(R.id.tvSrc); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(v.getContext(),"inside viewholder position = " + getAdapterPosition(),Toast.LENGTH_SHORT).show(); } }); }
2)在BindViewHolder中
public void onBindViewHolder(DisplayTrainsAdapter.ViewHolder viewHolder,final int position) { viewHolder.tvSrc.setText(mDataset.get(position).strSrc); viewHolder.tvSrc.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(v.getContext(),"position = " + getItemId(position),Toast.LENGTH_SHORT).show(); } }); }