码迷,mamicode.com
首页 > 其他好文 > 详细

GridView的点击事件冲突解决

时间:2015-07-08 13:02:26      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:android开发   gridview   事件冲突   

      在开发的时候,经常可能遇到ListView或GridView控件点击事件与Item点击事件冲突的问题原因是Item布局中的button或ImageButton强制获取了item的焦点,解决方式之一是:只要设置Item布局中的button的focusable为false即可,另外可以在Item布局的根节点添加属性android:descendantFocusability="blocksDescendants"也可以解决。

    今天在开发一界面的时候遇到了点击事件冲突问题,并不是I控件本身与Item上的控件冲突,而是控件的本身与其header(比如ListView可以添加Header)中的事件冲突,用上面的方法就解决不了。先贴下界面情况,图是随便画的,请勿喷!

技术分享

如上图,主要是头部的GridView与本身控件PullToRefreshGridViewWithHeaderAndFooter及其它部分控件的事件冲突,头部GridView的onItemClick()事件非常不灵敏,甚至无效,除非先点击其它部分,再点击GridView的item才有效。试了各种 方式都无效,后来就用了一个最原始的方法,就是把每一个Item的点击事件放在GridView的适配器adapter中来处理,冲突问题就没有了。

adapter中的主要代码 :

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.product_category_list_item, null);
holder.categoryRela=(RelativeLayout) convertView.findViewById(R.id.index_category_rela);//是在item的根结点设置的id
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
holder.categoryRela.setOnClickListener(new OnClickListener() {//这里设置的点击事件
@Override
public void onClick(View v) {
EventBus.getDefault().post(new CategoryItemEvent(pos));
}
});
return convertView;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

GridView的点击事件冲突解决

标签:android开发   gridview   事件冲突   

原文地址:http://blog.csdn.net/true100/article/details/46800429

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!