在RecyclerView中的项目上添加addOnItemTouchListener或setOnClickListener?

问题描述 投票:-1回答:3

哪个是最推荐的处理点击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
    }
});
android android-recyclerview onclicklistener onitemclicklistener
3个回答
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
        }
});

0
投票

最常见的方式是使用接口来处理Recycler视图中的onClick事件。 Great read about this topic here


-1
投票

继续你的第二个意见。但是应该实现一个接口来处理OnClick事件

© www.soinside.com 2019 - 2024. All rights reserved.