最近,我正在学习Android中RecyclerView的界面,它是关于处理每个项目的click事件(因为RecyclerView没有内置的“ setOnItemClickListner()”)。
我发现Internet上有很多解决方案,有人建议直接在自定义ViewHolder构造函数内部的itemView上使用“ setOnClickListener()”:
public class NumberViewHolder extends RecyclerView.ViewHolder {
TextView listItemNumberView;
public NumberViewHolder(View itemView) {
super(itemView);
listItemNumberView = (TextView) itemView.findViewById(R.id.tv_item_number);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//do somethig
}
});
}
void bind(int listIndex) {
listItemNumberView.setText(String.valueOf(listIndex));
}
}
有人建议使用Interface实现以下目的:
public interface OnItemClickListener {
void onClick(int clickedItemIndex);
}
public class NumberViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView listItemNumberView;
public NumberViewHolder(View itemView) {
super(itemView);
listItemNumberView = (TextView) itemView.findViewById(R.id.tv_item_number);
itemView.setOnClickListener(this);
}
void bind(int listIndex) {
listItemNumberView.setText(String.valueOf(listIndex));
}
@Override
public void onClick(View view) {
int position = getAdapterPosition(); //get position for current ViewHolder object
mOnItemClickListener.onClick(position);
}
}
那么,有什么区别?安迪为什么选哪个更好?感谢您的帮助。