奇葩问题: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),请尊重他人的辛勤劳动成果,谢谢! 我在上一 ...
随机推荐
- java与java学习路线
JAVA学习路线图 Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.Java语言作为静态面 ...
- javascript常用字符串函数和本地存储
concat将两个或多个字符的文本组合起来,返回一个新的字符串.var a = "hello";var b = ",world";var c = a.conca ...
- Jeecg 如何执行批量insert或者update操作,高效率
方法:org.jeecgframework.core.common.dao.jdbc.SimpleJdbcTemplate.batchUpdate 原理: 基于springjdbc封装,批量提 ...
- Install Ambari 2.2.0 from Public Repositories(Hadoop)
Step1: Download the Ambari repository on the Ambari Server host For Redhat/CentOS/Oracle: cd /etc/ ...
- kafka工作原理简介
消息队列 消息队列技术是分布式应用间交换信息的一种技术.消息队列可驻留在内存或磁盘上, 队列存储消息直到它们被应用程序读走.通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置.或在继续执行 ...
- Oracle学习笔记之三,Oracle 11g数据库的启动与关闭
SQL*PLus命令 SQLPLUS username[/password][@connect_identifier][AS SYSOPER|SYSDAB] 1. 启动数据库实例 STARTUP [n ...
- [svc][op]磁盘Inode详解-重要
另一篇白话总结 一.inode是什么 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB ...
- Django:Django Rest Framework
Django Rest Framework 一. 什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称 ...
- Books from Joe's blog
Some books that I really enjoy(ed) It's been quite some time since I blogged about what I've been re ...
- sqllite 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
试图加载格式不正确的程序. (异常来自 HRESULT:0x8007000B) 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细 ...