首页 > 代码库 > 关于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失效问题