首页 > 代码库 > 关于ListView嵌套GridView中的onItemClickListener失效问题
关于ListView嵌套GridView中的onItemClickListener失效问题
一开始在ListView中设置了onItemClickListener,在里面Log输出Item列表的位置,完全没有反应,
网上大部分说的什么把子组件屏蔽掉(而且好多都是转载的一样的),
可是我希望的就是要用到子组件,所以这个方法治标不治本
能否同时即监听到子组件,又监听到ListView本身呢?(未找到解决办法)
所以只能找其他解决办法了...
开始以为是与onTouch这个方法有冲突,
参考了:http://blog.csdn.net/jiangwei0910410003/article/details/17504315
但是把onTouch事件注释掉后问题没有解决,猜想可能是GridView的onItemClickListener获取了焦点,导致
ListView的onItemClickListener无法获取焦点,从而导致点击事件无法识别
后来一想,我只是想在点击事件中获取ListView的Item的位置而已,在GridView的onItemClickListener获取到也是
可以的,所以自己应该可以重写一个OnItemClickListener接口不就ok了吗
参考:http://my.oschina.net/gluoyer/blog/182322
就重写了一个OnItemClickListener接口,然后问题得以解决
1 private class OnItemChildClickListener implements OnItemClickListener { 2 // 点击类型索引,对应前面的CLICK_INDEX_xxx 3 private int clickIndex; 4 // 点击列表位置 5 private int rowItem; 6 7 public OnItemChildClickListener(int clickIndex, int position) { 8 this.clickIndex = clickIndex; 9 this.rowItem = position;10 }11 12 /**13 * 点击缩略图事件14 */15 @Override16 public void onItemClick(AdapterView<?> parent, View view, int position, long id)17 {18 if (i) {19 imgGroup = new ArrayList<ImageInfo>();20 imgGroup = imageInfoMap.get(timeMap.get(rowItem));21 Log.e("ListViewAdapter2", Integer.toString(position));22 Log.i("ListItem position",Integer.toString(rowItem));23 String fileName = imgGroup.get(position).getPath();24 File file=new File(fileName);25 Intent it =new Intent(Intent.ACTION_VIEW);26 Uri mUri = Uri.parse("file://"+file.getPath());27 it.setDataAndType(mUri, "image/*");28 i = false;29 activity.startActivity(it);30 activity.finish();31 } else {32 i = true;33 }34 }35 }36 //调用37 gv = (MyGridView) convertView.findViewById(R.id.gridview1);38 gv.setAdapter(new GridViewAdapter(context, position,timeMap,imageInfoMap));39 gv.setOnItemClickListener(new OnItemChildClickListener(0, position));
不知道还有没有其他什么好的解决ListView的按键监听被子组件覆盖的方法,有待研究~
关于ListView嵌套GridView中的onItemClickListener失效问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。