一开始在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 @Override 16 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的按键监听被子组件覆盖的方法,有待研究~
时间: 2024-10-01 20:55:38