Избегание вложенных макетов при использовании одного onClickListener для элемента в ListView - PullRequest
1 голос
/ 19 марта 2019

Предпосылка довольно проста.У меня есть список предметов, и у каждого предмета есть TextView, содержащий заголовок предмета, и Switch, показывающий, включен ли предмет или нет.Вместо того, чтобы нажимать Switch, чтобы включить или выключить элемент, я хочу иметь возможность щелкнуть в любом месте элемента, чтобы переключить его.В основном:

<android.support.constraint.ConstraintLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:onClick="toggleSwitch">

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <Switch
        android:id="@+id/switch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</android.support.constraint.ConstraintLayout>

Однако при использовании на экране это создаст вложенный макет, что может ухудшить производительность.Мне было интересно, поскольку этот ConstraintLayout буквально является просто контейнером с onClick, существует ли способ реализовать этот макет таким образом, чтобы избежать вложенных макетов.Спасибо!

1 Ответ

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

Вы можете просто дать вашему textView и вашей кнопке один и тот же метод, который будет вызываться при нажатии. Таким образом, при каждом щелчке представления (в любом месте элемента) вы будете вызывать свой метод.

Дляпример:

   textView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //change you switch state
        }
    });

   switch.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
             //change you switch state
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...