Представление, имеющее onClickListener в виде списка с возможностью прокрутки, больше не может быть проведено, но реагирует только на событие onClick - PullRequest
0 голосов
/ 27 марта 2019

Я реализовал пролистываемый список, следующий за этим URL: https://jayrambhia.com/blog/swipe-listview, единственное отличие состоит в том, что у меня есть только MotionEvent.ACTION_DOWN и MotionEvent.ACTION_UP и я обнаруживаю движение в MotionEvent.ACTION_UP на основе значения deltaX. Настраиваемый вид элемента списка в макете, подобном этому, в Linearlayout:

TextView1 | TextView2 TextView3

перед смахиванием выглядит так:

enter image description here

Первоначально TextView2 и 3 скрыты. При перелистывании этого представления они будут отображаться следующим образом:

enter image description here

У меня установлено onClickListener для всех 3-х TextView, и было установлено, что с onClickListener, установленным в TextView1, я не могу провести пальцем, если начинать с TextView1, и все еще могу проводить пальцем вне TextView1, так как TextView2 и 3 изначально скрыты. Похоже, что TextView1 отвечает только на OnClickLisener.

Я также пытался вызвать их для TextView1:

setClickable(true);
setEnabled(true);
setFocusable(true);
setFocusableInTouchMode(true);

Что я пропустил? Любые советы будут оценены. Заранее спасибо!

Editted:

Я заметил, что если я положу палец между TextView1 и его родительским Linearlayout, тогда смахивание будет работать. Таким образом, кажется, что дочернее представление (TextView1) отключило родительское представление (Linearlayout) onTouchListener из-за onClickListener дочернего представления? Как я могу получить onTouchEvent, когда смахивание начинается в дочернем представлении?

1 Ответ

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

Я публикую ответ, специфичный для моей ситуации.Пожалуйста, проверьте этот URL, чтобы получить код реализации пролистываемого списка: https://jayrambhia.com/blog/swipe-listview.

В своем коде я подключил сенсорный слушатель к представлению макета элемента списка (convertView):

convertView.setOnTouchListener(new SwipeDetector(viewHolder, position, data, mContext));

ИЯ также подключил тот же сенсорный слушатель к «TextView1» держателя представления для этого convertView: ( Это заставляет работать с «TextView1». )

TextView1.setOnTouchListener(new SwipeDetector(this, position, data, act));

Где

data - a java class holding the information for each list item;
position - a index of the list item
act / mContext - the activity instance
viewHolder - View holder class defined in the adapter
this - the Viewholder
...