关于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接口,然后问题得以解决
private class OnItemChildClickListener implements OnItemClickListener {
// 点击类型索引,对应前面的CLICK_INDEX_xxx
private int clickIndex;
// 点击列表位置
private int rowItem;
public OnItemChildClickListener(int clickIndex, int position) {
this.clickIndex = clickIndex;
this.rowItem = position;
}
/**
* 点击缩略图事件
*/
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
if (i) {
imgGroup = new ArrayList<ImageInfo>();
imgGroup = imageInfoMap.get(timeMap.get(rowItem));
Log.e("ListViewAdapter2", Integer.toString(position));
Log.i("ListItem position",Integer.toString(rowItem));
String fileName = imgGroup.get(position).getPath();
File file=new File(fileName);
Intent it =new Intent(Intent.ACTION_VIEW);
Uri mUri = Uri.parse("file://"+file.getPath());
it.setDataAndType(mUri, "image/*");
i = false;
activity.startActivity(it);
activity.finish();
} else {
i = true;
}
}
}
//调用
gv = (MyGridView) convertView.findViewById(R.id.gridview1);
gv.setAdapter(new GridViewAdapter(context, position,timeMap,imageInfoMap));
gv.setOnItemClickListener(new OnItemChildClickListener(0, position));
不知道还有没有其他什么好的解决ListView的按键监听被子组件覆盖的方法,有待研究~
关于ListView嵌套GridView中的onItemClickListener失效问题的更多相关文章
- ScrollView嵌套ListView嵌套GridView的上下拉以及加载更多
ScrollView 效果 ScrollView 说明 一个ScrollView 嵌套ListView 嵌套GridView的上拉加载更多,下拉刷新的demo. 主要是重写了GridView和Lsit ...
- android listView嵌套gridview的使用心得
在开发的过程中可能需要用到listview嵌套gridview的场景,但是在Android中, 不能在一个拥有Scrollbar的组件中嵌入另一个拥有Scrollbar的组件,因为这不科学,会混淆滑动 ...
- ListView嵌套GridView
首先,我们通过两个实例来了解下本篇文章所讲的重点,看下图: 微博: 陌陌: 大家应该对这两款软件并不陌生,接下来,我将列举下本文将要实现的几个点: 1.ListView嵌套GridView,互不冲突, ...
- ListView嵌套GridView使用详解及注意事项
ListView嵌套GridView即ListView的每个Item中都包含一个GridView:需要注意的是由于ListView和GridView都是可滑动的控件. 所以需要自定义GridView, ...
- Flutter中用ListView嵌套GridView报错异常
flutter中的ListView组件和GridView组件都是常用的布局组件,有时候ListView中需要嵌套GridView来使用,例如下图: 这种情况就需要在ListView里面再嵌套一个Gri ...
- 【Android】listview 嵌套gridview报错,代码:”during second layout pass: posting in next frame
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985, QQ986945193 公众号:程序员小冰 说明:本人曾经在listview嵌套gridview出现 ...
- ListView嵌套GridView,显示不全解决办法
ListView嵌套GridView时,遇到了GridView只显示一行,其余都显示不出来的问题,最终解决办法如下: 需要自定义GridView,重新绘制高度即可: public class MyGr ...
- div中嵌套div中使用margin-top失效问题
div中嵌套div中使用margin-top失效问题
- Android中ListView嵌套GridView的简单消息流UI(解决宽高问题)
最近搞一个项目,需要用到类似于新浪微博的消息流,即每一项有文字.有九宫格图片,因此这就涉及到ListView或者ScrollView嵌套GridView的问题.其中GridView的高度问题在网上都很 ...
随机推荐
- STM32F0系列MCU中断向量表的重映射
最近使用了一款Cortex-M0内核的芯片STM32F030CC,发现它中断向量表的重映射方法与STM32F10x系列的有所区别,在这里记录与分享一下. 由于需要通过IAP进行固件升级,所以芯片的FL ...
- mysql delete数据 空间占用不减少的解决办法
今天空间商告诉我数据库空间满了,检查了一下,发现网站用户行为记录数据表竟然占了20多MB.积累了半年了,该删除释放一下空间了.果断delete之后发现数据库空间竟然没少,虽然数据记录数是零. 原来这是 ...
- NIOS II开发备忘录
大概有一年没做NIOS II的开发了,回想上一次做NIOS II还是去年做毕业设计的时候.那时候做的是基于SOPC的频率特性测试仪,我大约花了2个月的时间,从无到有的学习了NIOS II开发.学习过N ...
- Hibernate,JPA注解@Embeddable
JPA嵌入式对象(又名组件) 在实体中可以定义一个嵌入式组件(embedded component), 甚至覆盖该实体中原有的列映射. 组件类必须在类一级定义@Embeddable注解. 在特定的实体 ...
- php const define 区别有那些呢?
(1) 编译器处理方式不同 define宏是在预处理阶段展开. const常量是编译运行阶段使用. (2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开. const常量有 ...
- thinkphp3.2 分页方式汇总
//自定义分页 $page = $_GET['page'] ? $_GET['page'] : 1 ; $count = $this->Table("user")->c ...
- 流量分析 seo alexa 排名
百度权重 举例,百度搜索中输入"中医百科" ,排名前三的: http://www.a-hospital.com/w/中医 1. url是关键词的方式,包含中文名,说明当前百度的搜索 ...
- (java)==和equals()的使用小结
1.如果两个变量说基本数据类型,且都是数值类型,eg.65f,65(不一定要求数据类型严格相同),只要两个变量的值相等,就将返回true int it=65; float fl=65.0f; char ...
- hack是什么
不同浏览器对css的解析是不同是,因此需要css hack来解决浏览器局部的兼容性问题.针对不同浏览器写不同的CSS代码的过程叫CSS Hack. 常见的hack有三种形式,分别是CSS属性hack ...
- easyui 布局标题纵向排列
(function($){ var buttonDir = {north:'down',south:'up',east:'left',west:'right'}; ...