ListView的item点击事件不响应
2015-12-22 18:05
561 查看
第一步:确保重写的Adapter里面getItem有正常的返回值:
第二步:设置ListView对象的监听:
如果item里面嵌套了抢焦点的控件(比如Button ,CheckBox等),那么点击item的时候,button等抢焦点的控件会抢先反应,这是因为item的焦点被button等控件抢了,想要item有自己的焦点,button等控件有自己的焦点的话,需要在item的根控件里面设置:android:descendantFocusability="blocksDescendants",这个属性值表示子有字的焦点,父有父的焦点:
该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。
属性的值有三种:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点,也就是各有各的焦点
如果还是抢焦点的话,在抢焦点的子控件里面设置android:focusable="false",基本上是没有抢焦点的问题的。
应该设置为true
popupwindow
@Override public Object getItem(int position) { return list.get(position); }
第二步:设置ListView对象的监听:
ListView lv; lv=(ListView)view.findViewById(R.id.index_listview); lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick (AdapterView < ? > parent, View view,int position,long ItemId){ //里面写item的操作 } };
如果item里面嵌套了抢焦点的控件(比如Button ,CheckBox等),那么点击item的时候,button等抢焦点的控件会抢先反应,这是因为item的焦点被button等控件抢了,想要item有自己的焦点,button等控件有自己的焦点的话,需要在item的根控件里面设置:android:descendantFocusability="blocksDescendants",这个属性值表示子有字的焦点,父有父的焦点:
该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。
属性的值有三种:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点,也就是各有各的焦点
如果还是抢焦点的话,在抢焦点的子控件里面设置android:focusable="false",基本上是没有抢焦点的问题的。
PopupWindow里显示listview 解决ListView取不到ItemClick事件问题
取不到焦点的 原因1: 创建popupwindowde 时候设置为false,应该像如下一样设置最后一个参数为true
PopupWindow pop= new PopupWindow(vBookClass, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, true);原因2:在代码中设置过
mPopupWindow.setFocusable(false);
应该设置为true
popupwindow
View popupView = getLayoutInflater().inflate(R.layout.acitivity_popu_classify_list, null); popListviewMethod(popupView); mPopupWindow = new PopupWindow(popupView, 240, LinearLayout.LayoutParams.WRAP_CONTENT, true); mPopupWindow.setBackgroundDrawable(this.getResources().getDrawable(R.drawable.popuwindow_bg_bg)); mPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() { @Override public void onDismiss() { mCover.setVisibility(View.GONE); } }); mPopupWindow.setOutsideTouchable(true); mPopupWindow.showAsDropDown(mtitleView, 30, 0);
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories