ListView.setOnItemClickListener、setOnCreateContextMenuListener无效

如果ListView中的单个Item的view中存在checkbox,button等view,会导致ListView.setOnItemClickListener无效,

事件会被子View捕获到,ListView无法捕获处理该事件.

解决方法:

在checkbox、button对应的view处加android:focusable="false"
   android:clickable="false"
android:focusableInTouchMode="false"

其中focusable是关键

从OnClickListener调用getSelectedItemPosition(),Click 和selection
是不相关的,Selection是通过D-pad or trackball 来操作的,Click通常是点击操作的。

arg2参数才是点击事件位置的参数

第二种方法 就是在自己的getView中

convertView = mInflater . inflate ( R . layout . list_item_text , null );  
convertView . setClickable ( true );  
convertView . setOnClickListener ( clickListener );  
public OnClickListener myClickListener = new OnClickListener () {  
public void onClick ( View v ) {  
     
            //code to be written to handle the click
event  
 
  }  
};

原文地址:http://blog.csdn.net/homebei2/article/details/6277905

时间: 2024-10-15 03:55:17

ListView.setOnItemClickListener、setOnCreateContextMenuListener无效的相关文章

ListView.setOnItemClickListener无效

如果ListView中的单个Item的view中存在checkbox,button等view,会导致ListView.setOnItemClickListener无效, 事件会被子View捕获到,ListView无法捕获处理该事件. 解决方法: 在checkbox.button对应的view处加Android:focusable="false"   android:clickable="false" android:focusableInTouchMode=&quo

ListView.setOnItemClickListener 点击无效

如果ListView中的单个Item的view中存在checkbox,button等view,会导致ListView.setOnItemClickListener无效, 事件会被子View捕获到,ListView无法捕获处理该事件. 解决方法: 在checkbox.button对应的view处加android:focusable="false"    android:clickable="false"android:focusableInTouchMode=&quo

ListView.setOnItemClickListener不起作用的原因

ListView.setOnItemClickListener不起作用的原因是item的layout中对以下两个属性设置为true: android:focusable="true" android:focusableInTouchMode="true" 将其改为false或者不设置(默认为false)即可: android:focusable="false" android:focusableInTouchMode="false&qu

ListView setOnItemClickListener无效原因分析

如果在ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView的Item能被选中的基础是Item本身 能够获取Focus,所以点击Item无法获取点击响应.可以通过以下两种方法之一进行解决: 1.在button.checkbox对应的view处加上 android:focusable="false" android:clickable="false" android:focusableInTo

android开发,设置listview的高度无效

一般是在item的layout中设置高度 android:layout_height="100dp" 但是发现这样后无效,因此找到解决办法,如下: android:minHeight="100dp"

为什么ListView的setSelection无效了-转

原因一:界面初始化完成之后listview失去了焦点. 原因二:因为listview的item高度不一致,或者添加了headerview,在setadapter之后调用setSelection无法准确定位. 万能解决方法: [java] view plaincopy final ListView listView = new ListView(getActivity()); listView.post(new Runnable() { @Override public void run() {

Android Fragment中ListView的OnItemClickListener无效

人可能会变,但代码不一样,一个地方出错说不执行就是不执行. 网上说是ListView的 OnItemClick监听失效的原因.还有网上给出的解决方案是把加载ListView数据的每一项都加上 android:focusable="false" 然后一切问题就OK 了. 因为点击的焦点被ListView列表里的其他控件给获取了,所以就出现未反应情况.

ListView焦点

如果ListView中的单个Item的view中存在checkbox,button等view,会导致ListView.setOnItemClickListener无效, 事件会被子View捕获到,ListView无法捕获处理该事件. 解决方法: 第一种方法: 在checkbox.button对应的view处加android:focusable="false" android:clickable="false" android:focusableInTouchMode

Listview中checkBoxe的多选

注意点:Listview的item中存在checkBox , radiobutton,会导致ListView.setOnItemClickListener无效. 原因:    事件会被子View捕获到,ListView无法捕获处理该事件. 解决方法:在子view的xml中设置如下属性: android:focusable="false"                 android:clickable="false" android:focusableInTouc