Как обрабатывать несколько щелчков макета в recyclerView в Android

В нашем приложении у нас есть список сообщений. Мы переходим кRecyclerView, Наши сообщения могут состоять из текстов, изображений. Пример сообщения может выглядеть следующим образом.

Для обработки кликов используйте этот класс:

public class RecyclerViewItemClickListener implement  RecyclerView.OnItemTouchListener {

    public static interface OnItemClickListener {
        public void onItemClick(View view, int position);
        public void onItemLongClick(View view, int position);
    }

    private OnItemClickListener mListener;
    private GestureDetector mGestureDetector;

    public RecyclerViewItemClickListener(Context context, final RecyclerView recyclerView, OnItemClickListener listener) {
        mListener = listener;
        mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                return true;
            }

            @Override
            public void onLongPress(MotionEvent e)
            {
                View childView = recyclerView.findChildViewUnder(e.getX(), e.getY());
                if(childView != null && mListener != null)
                {
                    mListener.onItemLongClick(childView, recyclerView.getChildAdapterPosition(childView));
                }
            }
        });
    }

    @Override
    public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
        View childView = view.findChildViewUnder(e.getX(), e.getY());
        if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
            mListener.onItemClick(childView, view.getChildAdapterPosition(childView));
        }
        return false;
    }

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

и мы реализуем эти клики в действии следующим образом:

chatView.setLongClickable(true);
        chatView.addOnItemTouchListener(
                new RecyclerViewItemClickListener(this, chatView, new RecyclerViewItemClickListener.OnItemClickListener() {
                    @Override public void onItemClick(View view, int position) {

                        //handleSingleClick(view, position);

                    }
                    @Override
                    public void onItemLongClick(View view, int position)
                    {
                        handleLongPress(position);
                    }
                })
        );

Клики для сообщения работают, теперь я хочу также обрабатыватьuserAvatar клики из того жеGestureDetection, Можно ли определить, с какого макета элемента списка была нажата кнопка?GestureDetector?

Другими словами, могу ли я получитьGestureDetecter щелкнул ребенок. В моем случае клик для всего элемента (аватар, текстовое сообщение, изображение). Могу ли я определить, какой элемент внутри этого элемента был нажат (например, я хочу поймать клик по аватару).

Ответы на вопрос(0)

Ваш ответ на вопрос