奇葩问题:ListView中Item与Item中的Button不能单击问题
android中ListView是一个经常要用到的一个组件,用到该组件时经常会碰到ListView的Item和Item中的Button不能单击的问题。
本人在使用时同样也遇到过这样的情况,共有三种情况,总结如下:
情况一:焦点问题: 设置android:descendantFocusability="blocksDescendants"> 和android:focusable="false"
该情况比较常见,在网上都可以搜索到相关的解决办法,不在这过多的介绍,先给出我以前总结的方法的连接。
http://blog.csdn.net/competerh_programing/article/details/8028764
情况二:由Listview的android:layout_height="wrap_content"引起。
此类情况完全是由Listview的android:layout_height="wrap_content"引起,修改成一个确定的值就可以解决。详细的请看以下连接
http://blog.csdn.net/competerh_programing/article/details/7731599
情况三:通过Handler适时更新listview的适配器引起
这是我最近才遇到的一种情况:在前面的两种情况都解决的情况下,我的listview没有出现单击item或button不响应的现象。
现在是要做出这样的效果,单击item后让其显示高亮,我在listview的适配器中加了一个整形参数标志选中的item并让其背景色高亮,然后再item单击事件中传入该参数,并通过消息队列通知Handler让Listview的adapter更新数据后选中的itme则显示高亮。
这样做以后,就导致了如下情况:item一直可以单击响应,在item单击几次后在单击button,button没有了响应,再单击item或其他button,则触发出之前没有响应的单击事件。
然后尝试各种单击后,设置item不能获取焦点,都不管用。最后发现只有将handler中listview的adapter数据更新注销掉才解决。
其中的缘由还未找到,现共享给大家希望能帮到各位,麻烦知道的大虾可以给出解释。
情况三的解决办法:今天又碰到与三类似的情况,这次逃避不了,只有硬着头皮解决。我仔细看看了代码,用Handler更新Listview内容代码的:
noticeAdapter.setInfoList(noticeList);
noticeAdapter.notifyDataSetChanged();老觉着不对劲,然后再加了一句lvNotice.setAdapter(noticeAdapter);调试通过,问题解决。
之前在handler中更新listview后一直都保留setAdapter(noticeAdapter)后来删除发现也没什么影响。现在问题出现了希望给大家以提醒。
最后说明一下,我遇到是属于第二种情况 把Listview的android:layout_height="wrap_content"改为fill_parent 就好了。
奇葩问题:ListView中Item与Item中的Button不能单击问题的更多相关文章
- listview当选中某一个item时设置背景色其他的不变
listview当选中某一个item时设置背景色其他的不变: 可以使用listview.setOnFoucsChangeListener(listener) ; /** * listview获得焦点和 ...
- android——仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中
转载请注明出处: www.cnblogs.com/shoneworn 我这里只是简单的用了两个listview来实现的,先上效果图.比较粗糙.预留了自定义的空间. 思路: 从上图应该可以看的出来.就是 ...
- Scrapy入门到放弃05:让Item在Pipeline中飞一会儿
前言 "又回到最初的起点,呆呆地站在镜子前". 本来这篇是打算写Spider中间件的,但是因为这一块涉及到Item,所以这篇文章先将Item讲完,顺便再讲讲Pipeline,然后再 ...
- golang取地址操作采坑:for idx,item := range arr中的item是个独立对象
先看代码: package main import "fmt" func main() { type s struct { A string B int32 } arr := [] ...
- ListView只更新某个item
方案1:针对需要更新的item调用public View getView(int position, View convertView, ViewGroup parent)即可.如: public c ...
- [Android Pro] listView和GridView的item设置的高度和宽度不起作用
referece to : http://blog.csdn.net/beibeixiao/article/details/9032569 1. 在Android开发中会发现,有时listVi ...
- Android 使用NineOldAndroids实现绚丽的ListView左右滑动删除Item效果
本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/18311877) 今天还是给大家带来自定义控件的编写,自定义一个Lis ...
- 【转】Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
原文网址:http://blog.csdn.net/xiaanming/article/details/17539199 转帖请注明本文出自xiaanming的博客(http://blog.csdn. ...
- [转]Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17539199),请尊重他人的辛勤劳动成果,谢谢! 我在上一 ...
随机推荐
- mysql 权限处理
这是对mysql 业务用户在权限处理中遇到的坑: 之前在新建mysql 实例后会做两件事 1.增加业务库 2.为业务库增加一个与之对应的用户 create database appdb char se ...
- unity update与fixedUpdate
update与渲染同步.fixedUpdate与物理同步. 在update中,speed要乘以Time.deltaTime.在fixedUpdate中,speed要乘以Time.fixedDeltaT ...
- graphite的安装文档
http://www.th7.cn/Program/Python/201603/783804.shtml https://lanjingling.github.io/2016/04/04/graphi ...
- Windows Azure Mobiles Services实现client的登录注冊
下文仅仅是简单实现,client以Android端的实现为例: 用户表Account: package com.microsoft.ecodrive.model; public class Accou ...
- 简易C#动态加载dll(实现插件化)
可以通过该方法来实现程序插件化. 假设A,B两个类,A类为宿主,B类为插件需要加载到A类中: class Program { public interface IHellow { void Hello ...
- 转:python常用运维脚本实例
python常用运维脚本实例 转载 file是一个类,使用file('file_name', 'r+')这种方式打开文件,返回一个file对象,以写模式打开文件不存在则会被创建.但是更推荐使用内置函 ...
- JVM building
http://hg.openjdk.java.net/jdk10/jdk10/raw-file/tip/README file:///D:/JDK/jdk11/jdk/doc/building.htm ...
- 再访贺利坚(一):IT毕业生去培训机构,这件事很正常(转载)
转载自: 再访贺利坚(一):IT毕业生去培训机构,这件事很正常 导语:与烟台大学计算机学院贺利坚副教授相识,还是在2012年年底,那个时候我在为社区之星专访栏目寻找合适的采访人.在社区运营的推荐下,我 ...
- Linux下crontab内环境变量与Shell环境变量的关系【转】
crontab,总是不会缺省的从用户profile文件中读取环境变量参数 经常导致在手工执行某个脚本时是成功的,但是到crontab中试图执行时就会报错. 解决办法如下: 方法一:在shell文件中获 ...
- sqlserver判断是否为数字的函数
ISNUMERIC 确定表达式是否为一个有效的数字类型. 语法 ISNUMERIC ( expression ) 参数 expression 要计算的表达式. 返回类型 int 测试: select ...