奇葩问题: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),请尊重他人的辛勤劳动成果,谢谢! 我在上一 ...
随机推荐
- vue中如何实现数据的双向绑定
vue中如何实现数据的双向绑定 实现视图变化数据跟着变:分两步,上面get中的为第二步(即再次读取的时候会调用get方法得到之前设置的值,以此来实现动态改变) 由于直接写obj.name = this ...
- django中处理文件上传文件
1 template模版文件uploadfile.html 特别注意的是,只有当request方法是POST,且发送request的<form>有属性enctype="multi ...
- NodeJS错误处理最佳实践
NodeJS的错误处理让人痛苦,在很长的一段时间里,大量的错误被放任不管.但是要想建立一个健壮的Node.js程序就必须正确的处理这些错误,而且这并不难学.如果你实在没有耐心,那就直接绕过长篇大论跳到 ...
- Linux常用命令的解释
作者博客已转移,http://www.daniubiji.cn/archives/25 Linux简介及Ubuntu安装 常见指令 系统管理命令 打包压缩相关命令 关机/重启机器 Linux管道 Li ...
- [svc][op]ssh交互yes问题解决-expect
Expect是Unix系统中用来进行自动化控制和测试的软件工具C67默认未安装:使用需要安装: yum install expect -ywhich expect #查看安装路径 核心命令: [roo ...
- 【Maven学习】Maven打包生成包含所有依赖的jar包
http://blog.csdn.net/u013177446/article/details/54134583 ******************************************* ...
- JDK Logger 简介 (zhuan)
http://antlove.iteye.com/blog/1924832 ******************************************* 一 简述 java.util.log ...
- LeetCode: Roman to Integer 解题报告
Roman to IntegerGiven a roman numeral, convert it to an integer. Input is guaranteed to be within th ...
- MySQL Daemon failed to start
http://blog.163.com/cmdbat@126/blog/static/17029212320122804743900/
- linux查找系统中占用磁盘空间最大的文件
Q:下午有一客户磁盘空间占用很大,使用df查看磁盘剩余空间很小了,客户想知道是哪些文件占满了文件. Q1:在Linux下如何查看系统占用磁盘空间最大的文件? Q2:在Linux下如何让文件夹下的文件让 ...