addOnItemTouchListener или setOnClickListener для элемента в RecyclerView? - PullRequest
0 голосов
/ 25 марта 2019

Какой самый рекомендуемый способ обработки щелчков на элементах 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 голосов
/ 25 марта 2019

Перейти к вашему второму мнению.Но должен быть реализован интерфейс для обработки события OnClick

0 голосов
/ 26 марта 2019

Лучший и эффективный способ получить элемент представления «Переработка» - с использованием интерфейса , как показано ниже:

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 голосов
/ 25 марта 2019

Наиболее распространенный способ использования интерфейсов для обработки событий onClick в представлении Recycler. Замечательно читайте об этой теме здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...