一開始在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的按鍵監聽被子組件覆蓋的方法,有待研究~