关于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         @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-07-31 12:52:10

关于ListView嵌套GridView中的onItemClickListener失效问题的相关文章

android listView嵌套gridview的使用心得

在开发的过程中可能需要用到listview嵌套gridview的场景,但是在Android中,不能在一个拥有Scrollbar的组件中嵌入另一个拥有Scrollbar的组件,因为这不科学,会混淆滑动事件,导致只显示一到两行数据.那么就换一种思路,首先让子控件的内容全部显示出来,禁用了它的滚动.如果超过了父控件的范围则显示父控件的scrollbar滚动显示内容,思路是这样,一下是代码.具体的方法是自定义GridView组件,继承自GridView.重载onMeasure方法: public cla

ListView嵌套GridView

首先,我们通过两个实例来了解下本篇文章所讲的重点,看下图: 微博: 陌陌: 大家应该对这两款软件并不陌生,接下来,我将列举下本文将要实现的几个点: 1.ListView嵌套GridView,互不冲突,界面显示及操作正常: 2.GridView中的图片依据屏幕大小,自动扩大或缩小以适应屏幕,并始终保持正方形: 3.图片数量不同时,布局不同(如上图的4张图片和6张图片): 4.点击ListView的item和点击Gridview的item互不冲突: 5.在GridView区域外的任何一点点击都可以触

在ListView或GridView 中使用到跑马灯滚动效果实现的问题。

一般情况下TextView实现跑马灯效果只要设置一些几个属性即可实现了. android:singleLine="true"//只显示单行 android:ellipsize="marquee"       //实现滚动效果 android:focusable="true"    //获取焦点,获取不到焦点是无法实现跑马灯滚动的 android:marqueeRepeatLimit="marquee_forever"  //

android实现ListView或GridView中item的倒数功能

有时在开发中可能会遇到当未到某个时间时需要让ListView或GridView中的相应item进行倒数的需求,此时,如果还是按照常见的ListView或GridView的Adapter的写法+计时功能来实现的话,则当滚动ListView或GridView的时候,item就可能会出现复用问题(即不需要进行倒数或当前item的倒数已经结束了,却还会出现倒数的现象),因此,为了解决这种问题,需要进行倒数时,重新遍历当前对象的集合,然后让每个对象的相应时间值减1,最后再通过Adapter的notifyD

Android中ListView嵌套GridView的简单消息流UI(解决宽高问题)

最近搞一个项目,需要用到类似于新浪微博的消息流,即每一项有文字.有九宫格图片,因此这就涉及到ListView或者ScrollView嵌套GridView的问题.其中GridView的高度问题在网上都很容易找到答案,即覆写onMeasure方法,然后设置高度的MeasureSpec.但是宽度问题确实没有什么资料,这里所说的宽度问题是比如GridView的列数为3,那么即使只有一张图片,gridview的宽度也是match_parent的,导致用户点击在图片范围外但是在gridview范围内时Lis

LISTVIEW嵌套GRIDVIEW的一些处理(点击GRIDVIEW的条目,能够显示他在LISTVIEW中的位置)(对这篇文章的优化处理,不每次都new onItemClickListener)

前几天写了点击GRIDVIEW的条目,能够显示他在LISTVIEW中的位置,当时的处理是在ListView的适配器里的GetView方法里每次都new GridView的onItemClickListener,这样显然是不合理的, /**GridVIew的条目点击监听*/ private GvOnItemClickListener mGvOnItemClickListener;//成员 这是Fragment的入口: @Override public View onCreateView(Layou

listview嵌套gridview,并实现grid元素部分显示以及点击展开与折叠

原文链接:http://blog.csdn.net/duguju/article/details/49538341 有时我们需要用GridView显示目录列表,有时甚至是二级的,即listview每一个item里面又各自嵌入一个gridview,但是当二级目录(数据条目)的数量过多时,界面会比较臃肿,这时我们就想要有类似展开与折叠的效果,作者采用的策略是数据分段的分别显示,其中对于显示边界(处于限制显示数目的特定位置)的控件要有数据的动态更新和点击判断操作.效果如图: 具体实现: 一.Activ

ListView嵌套GridView显示不全解决方法

转载注明出处:http://blog.csdn.net/allen315410/article/details/40152987 最近在做项目中,有个模块需要在ListView中嵌套一个GridView制作"九宫格"的效果,结果GridView上的子元素仅仅显示了一行,没有显示完整的说,如下图: 其实这个ListView上一共需要显示的是6张图片,也就是说还有3张图片需要在下一行显示的,结果GridView没有显示完全,这个问题很奇怪,但是已经找到解决的方案,就是重写一个GridVie

ListView嵌套GridView显示不完整的解决方案

转载注明出处:http://blog.csdn.net/allen315410/article/details/40152987 近期在做项目中,有个模块须要在ListView中嵌套一个GridView制作"九宫格"的效果.结果GridView上的子元素只显示了一行.没有显示完整的说.例如以下图: 事实上这个ListView上一共须要显示的是6张图片.也就是说还有3张图片须要在下一行显示的,结果GridView没有显示全然,这个问题非常奇怪.可是已经找到解决的方案,就是重写一个Grid