Добавление longClickListener в ViewGroup и щелчок на слушателе дочерних групп - как сделать так, чтобы оба работали? - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть видоискатель с линейным расположением внутри.

Линейный макет имеет onClickListener, который запускает новое действие.

весь мой ViewHolder, тем не менее, имеет LongClickListener, который работает по другой логике.

При добавлении прослушивателя щелчков к linearLayout внутри ViewHolder работает только этот прослушиватель щелчков, и это отключает линейный макет и весь ViewHolder от возможности «длительного щелчка».

Как я могу заставить их обоих жить вместе мирно и счастливо?

вот мой добавляемый прослушиватель щелчков -

 contactHolder.getSendContactLay().setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    List<Contact> contacts = new ArrayList<>();
                    Contact c = new Contact();
                    c.setContactName(contactMessage.getName());
                    c.setContactNos(String.valueOf(contactMessage.getPhoneNumber()).replace("]","").replace("[",""));
                    contacts.add(c);

                    ((Activity) context).startActivityForResult(new Intent(context,
                                    PickContactActivity.class).putParcelableArrayListExtra(Constants.USERNAME,
                            (ArrayList<Contact>) contacts),
                            Constants.SELECT_CONTACT_REQ_CODE);
                }
            });

, а вот мой прослушиватель длинных щелчков -

public void handleItemClick() {
        ItemClickSupport.addTo(listChats).setOnItemLongClickListener((recyclerView, position, v)
                -> {
            onItemLongClick(position);
            return true;
        });

        ItemClickSupport.addTo(listChats).setOnItemClickListener((recyclerView, position,
                                                                  v) -> {
            hideKeyboard();
            if (!clickedMessages.isEmpty())
                onItemClick(position);
        });
    }

при отладке и попытке долгого щелчка по видоискателю -это даже не вызывает метод длинного щелчка.

Как я могу заставить их жить вместе?

1 Ответ

0 голосов
/ 05 ноября 2019

убедитесь, что ваш родительский вид кликабелен: android:clickable="true"

вы можете попробовать реализовать OnTouchListener и вернуть null

myLinearLayout.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction() == MotionEvent.ACTION_UP)
                            //myLinearLayout view was clicked
            return false;
        }
    });
...