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

  • 相关阅读:
    Linux基础知识
    redis info
    记录: 解决 pycurl: libcurl link-time ssl backend (openssl) is different from compile-time ssl backend (none/other)
    IOS IAP 自动续订 之 利用rabbitmq延时队列自动轮询检查是否续订成功
    Python3.6 的字典为什么会快
    IAP 订阅后端踩坑总结之 Google 篇
    docker 命令合集
    Python Schema使用说明
    Apache Bench测试
    channels2.X 学习笔记
  • 原文地址:https://www.cnblogs.com/mthoutai/p/6757849.html
Copyright © 2011-2022 走看看