Listview中的item布局中嵌套horizontalScrollView实现点击事件(完整案例)

本文提供了一个完整的案例,详细介绍了如何在ListView的item布局中嵌套HorizontalScrollView并实现点击事件。针对ScrollView与HorizontalScrollView没有点击事件的问题,作者提出了使用回调函数的解决方案,以确保点击事件的有效触发。案例包括了activity_main.xml、item_layout.xml、ListviewAdapter.java和MainActivity.java四个部分,实现了点击ListView项选中CheckBox的功能。
摘要由CSDN通过智能技术生成

标题Listview中的item布局中嵌套horizontalScrollView实现点击事件(完整案例,想避坑的可以来看看)

我也是大家一样被这个问题困扰了好久,找过各种论坛和解决方案,看着大家东拼西凑的抄,网上都是说解决什么点击事件与滑动事件冲突问题(或者是只解决了纵横方向的冲突问题,其实都没有解决点击事件)找了半天也没有解决问题,希望和有同等困扰的朋友,可以尝试本文的一种新的解决方案。

一:首先要明白ScrollView与HorizontalScrollView是没有点击事件,我不作过多解释,相关原因请看郭神的这篇博客的解释,我也是看完后恍然大悟!博客网址:考你一道题,ScrollView和HorizontalScrollView可以设置点击事件吗?
二:明白为什么没有点击事件后,利用回调函数解决点击失效问题。(我并没有否认其他的解决方案,其他我试过都没有效果,但我认为这是最有效的解决方案)
(废话不多说,直接上代码!)

三.完整案例(结构命名等不规范,重要的是解决问题的思路请见谅,实现的功能是点击ListView中的这一项就会选中CheckBox.)
①activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ListView
        android:id="@+id/lv_test"
        android:layout_width="550dp"
        android:layout_height="match_parent"/>

</LinearLayout>

②item_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<HorizontalScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:scrollbars="none">

    <LinearLayout
        android:id="@+id/llayout"
        android:layout_width="match_parent"
        android:descendantFocusability="blocksDescendants"
        android:focusableInTouchMode="true"
        android:focusable="true"
        android:layout_height="60dp"
        android:gravity="center_vertical"
        android:orientation="horizontal">

        <CheckBox
            android:id="@+id/cb_item"
            android:layout_marginLeft="20dp"
            android:layout_width="50dp"
            android:layout_height="50dp" />
        <TextView
            android:id="@+id/tv_name_item"
            android:layout_width="590dp"
            android:layout_marginLeft="30dp"
            android:layout_height="match_parent"
            android:gravity="center_vertical"
            android
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值