【Android问题集】ListView不响应onItemClick事件

来源:互联网 发布:收看国外电视直播软件 编辑:程序博客网 时间:2024/06/04 00:14

作者:Yogi

前言:在机顶盒的直播应用项目中遇到listview完全不响应onItemClick事件,但是响应onItemSelected事件,这个问题该怎么解决呢?

解决思路

listView不响应onItemClick事件,有以下几个原因

1.应用卡死了

2.根本就没有setOnItemClickListener

3.listview没有获取到焦点

4.click事件被listview上的子控件消化了

分析

首先,我的应用没有卡死,所以可能性1排除了。查看代码之后,可能性2也排除了。
在Activity的dispatchKeyEvent方法中通过添加如下代码(打印当前获取了焦点的控件)

 Log.d(TAG, "current focus= " + getWindow().getCurrentFocus());

发现listview是有焦点的。所以可能性3也被排除了。只剩下可能性4了。
通过查看item的布局文件(以下是部分布局文件代码)

<LinearLayout     android:layout_width="fill_parent"    android:layout_height="@dimen/channel_nav_open_height"    android:clickable="true"    android:focusable="true"    android:orientation="horizontal" >    <FrameLayout        android:layout_width="wrap_content"        android:layout_height="@dimen/channel_nav_open_height" >        <ImageView            android:id="@+id/group_icon"            android:layout_width="@dimen/channel_nav_close_icon_width"            android:layout_height="@dimen/channel_nav_close_icon_height"            android:src="@drawable/nav_icon_a_nor" />        <TextView            android:id="@+id/nav_icon_number"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginLeft="45dp"            android:layout_marginTop="30dp"            android:textColor="@color/white"            android:textSize="20sp"            android:visibility="gone" />    </FrameLayout>    <TextView        android:id="@+id/group_name"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:layout_marginTop="@dimen/channel_nav_open_item_name_margin_top"        android:background="#00000000"        android:textColor="@drawable/nav_textcolor"        android:textSize="@dimen/channel_nav_open_item_name_text_size" /></LinearLayout>

可以看到第4行和第5行都为true,所以说,click事件被子控件消化了,去掉这2行(或者置为false),listview果然能响应onItemClick事件了。

总结

这个问题很简单,这篇日志主要是为了引出解决问题的思路。
解决问题之前,一定要把思路理清楚,先把问题的可能性都列出来,然后通过一系列的验证,得到问题发生的真正原因。

1 0
原创粉丝点击