возиться с событиями touch/click

Это не похоже на типичный макет представления, с которым у меня возникают проблемы.

У меня есть два списка.

Каждый listView имеет touchListener
(целью которого является синхронизация прокрутки путем вызова dispatchTouchEvent() в другой listView)

ListView also has onItemClickListener to handle clicks on the row of listView.

Все работает так, как здесь.

Я хотел бы добавить еще один clickListener в subview-group строки listView для обработки события click на subview.

После присоединения этого clickListener я вижу, что свиток listView не всегда работает.

Я подозреваю это, потому что clickListener этого дочернего представления проверяет сенсорные события (чтобы увидеть, действительно ли это нажмите ) перед сенсорным листом родителя (listView).

Я могу придумать два обхода этой проблемы.

  1. attach touchListener instead of clickListener to child, and make it return false for all touch event except FINGER_UP event.
    on FINGER_UP event, I execute the method which I initially had in onClickListener

  2. public boolean onInterceptTouchEvent (MotionEvent ev)

    Implement this method to intercept all touch screen motion events. This allows you to watch events as they are dispatched to your children, and take ownership of the current gesture at any point.
    (ok... I'm confused, I thought touch events goes to child views first and propagate to parents if children don't handle the touches..)

.. Как реализовать метод 1?
.. Пожалуйста, помогите мне разобраться с № 2, а также понять механизм доставки.

  • EDIT - This is where I add OnClickListener to my subview.

            viewHolder.layout_author.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent profileIntent = new Intent(ImageListAdapter.this.activity, ProfileActivity.class);
                        profileIntent.putExtra("JsonUser", jsonAlbumImage.jsonUser);
                        ImageListAdapter.this.activity.startActivity(profileIntent);
                    }
                });
    
0
добавлено отредактировано
Просмотры: 1

1 ответы

Я хотел бы добавить еще один элемент clickListener в subview-группу строки listView для обработки события click на subview. </Р>

Вам просто нужно написать пользовательский адаптер и назначить OnClickListener в getView() . Вы можете посмотреть на вопрос: Android GridView Button Click Handler , например, код.

Еще некоторое время назад я ответил на Android. Прокрутка 2 списка вместе . Вы использовали аналогичный подход для синхронизации списков ListView? Когда я совмещаю оба ответа, мое приложение функционирует так, как вы хотите. Надеюсь, это поможет.

0
добавлено
спасибо за подробный ответ. Я заменил свой код, чтобы следовать вашим стратегиям, но у него такая же проблема. row onclicklistener вызывает тревогу прокрутки list-view (parent)
добавлено автор eugene, источник
Я думаю, что установка onClickListener в подчиненном представлении listview препятствует тому, чтобы subview передавал событие касания родительскому (вид списка)
добавлено автор eugene, источник
Я добавил код. Ничего особенного..
добавлено автор eugene, источник
на самом деле мои строки не имеют одинаковой высоты. Я пытаюсь подражать макету pinterest
добавлено автор eugene, источник
Да, у меня появилась идея использовать два listViews оттуда. Я попробовал другие варианты. не просто! в любом случае, спасибо!
добавлено автор eugene, источник
Хмм, у меня не было такой проблемы. Отправьте свой код, где вы установили OnClickListener, чтобы я мог видеть, что происходит.
добавлено автор Sam, источник
Хорошо, я воссоздал то, что вы видите. Я пробовал это и так, вскоре мой код казался слишком длинным и на самом деле не работал. Но у меня возникла идея притворяться в ListViews. Почему бы не построить умную структуру строк, которая делает один ListView похожим на два? ListViews всегда будет «синхронизирован», и вы можете установить столько прослушивателей кликов подгрупп, сколько захотите. Сейчас я считаю, что этот подход - самая простая и лучшая тактика.
добавлено автор Sam, источник
Вы читали это: гетерогенный вид сетки Android, такой как pinterest? (я сам не пробовал ответы). Вы также можете найдите «android pinterest», чтобы выкопать еще несколько вопросов.
добавлено автор Sam, источник