Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在listview行中添加多个可单击区域_Java_Android_Xml_Listview - Fatal编程技术网

Java 在listview行中添加多个可单击区域

Java 在listview行中添加多个可单击区域,java,android,xml,listview,Java,Android,Xml,Listview,我想为具有两个单击区域的listview实现一行,其中有一些特殊要求: 我想要实现的是: 使用以下命令,单击配置: 红色区域链接用户配置文件 蓝色区域链接项目详细信息 单击黄色区域将被忽略 单击蓝色区域时,选中所有行(如背景=?attr/selectableItemBackground) 我已经尝试了几种配置,但没有获得所有要点: 配置A:在蓝色容器上添加一个clicklistener,在红色容器上添加另一个clicklistener,效果很好,但单击蓝色区域时缺少整行选定效果 配置B:在

我想为具有两个单击区域的listview实现一行,其中有一些特殊要求:

我想要实现的是:

使用以下命令,单击配置:

  • 红色区域链接用户配置文件
  • 蓝色区域链接项目详细信息
  • 单击黄色区域将被忽略
  • 单击蓝色区域时,选中所有行(如背景=
    ?attr/selectableItemBackground
我已经尝试了几种配置,但没有获得所有要点:

配置A:在蓝色容器上添加一个clicklistener,在红色容器上添加另一个clicklistener,效果很好,但单击蓝色区域时缺少整行选定效果

配置B:在整行上添加一个clickListener,在红色容器上添加另一个clickListener,也可以工作,但在黄色区域上的单击不会被忽略

我怎样才能做到这一点


注意:还尝试在黄色容器上使用带有空单击侦听器的配置B。但是添加clickListener来忽略它听起来很奇怪,我的真实视图比这更复杂,我应该添加很多空的clickListener。理想的行为应该是使用蓝色容器将其单击状态传播到行视图,这样A就可以工作了,但您想去掉按下的颜色吗?如果是这样,请将其添加到ListView XML中

    <ListView
    android:cacheColorHint="#00000000"
    android:listSelector="@android:color/transparent"
    />


您应该实现一个包含两个子版面的版面,其中一个子版面包含化身,另一个子版面包含您的数据,在Adapter类中,您应该添加具有特定布局id的标记,并为该布局添加OnClickListener,然后在单击布局时,您获得了标记,并且基于该标记,您可以在ListView项中处理视图。

您可以使用AB,只需使用minor加成

A

调用listview方法
void setItemsCanFocus(false)
,这样当您单击蓝色部分时,整行将获得焦点

B

在自定义适配器或基本适配器中重写
isEnabled()
方法,并为黄色部分返回
false
。这将阻止单击黄色零件的事件

我希望你的错误会得到纠正


谢谢

将单击侦听器添加到适配器并在“活动”中进行回调。