对ListView中的项目使用单个onClickListener时避免嵌套布局

时间:2019-03-19 09:50:13

标签: android xml android-layout

前提很简单。我有一个项目列表,每个项目都有一个包含项目标题的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 :(得分:0)

您可以为您的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
        }
    });