listview item中子控件聚焦问题

图片说明

如上图,有一个listview,里面右边小圆圈是imageview,初始的时候这个imageview都是这个图片,点击这个imageview,图片变为带勾的;点击每个item又都会跳转进去另一个界面;

要求:只有一个item中的imageview能被点击改变状态,不能多个同时改变状态,要怎么处理呢?还有图片范围很小很小,点击一不小心就会变成item响应,跳转进去另一个界面,这又该怎么处理?布局不能改变,所以只能代码实现

4个回答

问题1:
加一个纪录位置到变量,纪录imageview点击了的位置,当点击了其他item上的imageview的时候,则可以根据位置变量来将先前选中的imageview变为不带钩的。
问题2:
给imageview外面放上一个比较大的但是透明的点击热区,当点击到该区域到时候响应imageview点击事件

leilba
林深 回复Queen_hz:分成部分,假设纪录位置的变量为P,第一部分: 在getView的时候需要判断P的值是否等于position,如果相等的话说明当前item被选中,需要打勾,否则不显示打勾;第二部分:当点击到imageView(或者热区)的时候,需要判断P的值是否等于当前item的position(这个可以通过imageview的tag纪录position来传过来),相等不做处理,不等的话则P的值改为当前item的position,并刷新界面
3 年多之前 回复
u011249920
简一_hz 请问一下:其他位置的imageView我要在哪里设置?我在imageview的onClickListener里设并不起作用阿,刷新界面的时候不还是调到getView(),然后getView里又是只刷新了当前position的状态吗?
3 年多之前 回复

楼上说的可行,但是第二点我感觉可以给imageView加一个padding,设置一个值就好了

item点击的话可以用下标去控制,Imageview触控区域太小可以加层布局 增大可触控范围

问题1:
加一个纪录位置到变量,纪录imageview点击了的位置,当点击了其他item上的imageview的时候,则可以根据位置变量来将先前选中的imageview变为不带钩的。
问题2:
给imageview外面放上一个比较大的但是透明的点击热区,当点击到该区域到时候响应imageview点击事件

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!