zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    使用Dorado框架开发必备参考
    Dorado重用最佳实践
    css布局_web
    dorado学习笔记(二)
    Oracle归档日志删除
    给大家拜年啦!
    悟透JavaScript
    BCM57781网卡驱动下载地址
    win7安装jdk完后配置
    win7删除SVN保存的本地密码
  • 原文地址:https://www.cnblogs.com/mthoutai/p/6757849.html
Copyright © 2011-2022 走看看