• 奇葩问题: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 就好了

  • 相关阅读:
    org.hibernate.QueryException: could not resolve property
    tomcat启动异常(严重: Dispatcher initialization failed Unable to load configuration.
    MySQL开发规范
    JAVA字符串格式化-String.format()的使用
    使用 Ant 自动生成项目构建版本
    MySQL随机获取数据的方法,支持大数据量
    System.nanoTime与System.currentTimeMillis的区别
    [MySQL FAQ]系列 — 为什么InnoDB表要建议用自增列做主键
    inet_ntoa、 inet_aton、inet_addr
    MySQL关键字(保留字)列表
  • 原文地址:https://www.cnblogs.com/kobe8/p/3792408.html
Copyright © 2020-2023  润新知