在RecyclerView中的项目上是addOnItemTouchListener还是setOnClickListener?

时间:2019-03-25 17:48:36

标签: android android-recyclerview onclicklistener onitemclicklistener

推荐使用哪种方法来处理RecyclerView个项目上的点击?

recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
    private RecyclerView.OnItemTouchListener itemTouchListener;

    @Override
    public boolean onInterceptTouchEvent(@NonNull RecyclerView recyclerView, @NonNull MotionEvent motionEvent) {
        return false;
    }

    @Override
    public void onTouchEvent(@NonNull RecyclerView recyclerView, @NonNull MotionEvent motionEvent) {}

    @Override
    public void onRequestDisallowInterceptTouchEvent(boolean b) {}
});

还是在适配器内部的项目视图上设置点击侦听器?

itemView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        //Do stuff
    }
});

3 个答案:

答案 0 :(得分:0)

使用界面处理Recycler View内的onClick事件的最常见方式。 Great read about this topic here

答案 1 :(得分:0)

点击回收站视图项的最佳,有效方法是使用界面,如下所示:

1)首先,如下定义一个接口

public interface OnListItemClick {
   void onClick(View view, int position);
}

2)现在,从片段或活动中进行设置

OnListItemClick onListItemClick = new OnListItemClick() {
                            @Override
                            public void onClick(View view, int position) {
                              // you will get click here 
                                // do your code here
                             }
                          };
youradaptor.setClickListener(onListItemClick);

3)现在在您的适配器中创建一种方法

public void setClickListener(OnListItemClick context) {
    this.onListItemClick = context;
}

4)现在,在项目视图中,按如下所示使用

itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onListItemClick.onClick(view, getAdapterPosition()); // passing click to interface
        }
});

答案 2 :(得分:-1)

请发表您的第二意见。但是应该实现一个接口来处理OnClick事件