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;
    }

  • 相关阅读:
    终端等级UE Category—4G数据传输流程系列(五)
    4G数据传输流程系列(四)—物理层OFDM、MIMO实现
    4G数据传输流程系列(三)—物理层“从传输块到码字”
    4G网络数据传输流程与速率分析(二)--资源调度
    4G网络数据传输流程与速率分析系列(一)
    G.711 u律;A律 压缩算法
    VLAN IEEE802.1Q
    64B/66B编码
    Operator与优化
    对偶与Proximal
  • 原文地址:https://www.cnblogs.com/mthoutai/p/6757849.html
Copyright © 2011-2022 走看看