RecyclerView上的“ setOnClickListener()”和“ implement View.OnClickListener”之间有什么区别

时间:2019-07-26 21:03:11

标签: java android android-recyclerview interface onclicklistener

最近,我正在学习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);
    }
}

那么,有什么区别?安迪为什么选哪个更好?感谢您的帮助。

0 个答案:

没有答案