• 关于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接口,然后问题得以解决 

     1 private class OnItemChildClickListener implements OnItemClickListener {
     2         // 点击类型索引,对应前面的CLICK_INDEX_xxx
     3         private int clickIndex;
     4         // 点击列表位置
     5         private int rowItem;
     6          
     7         public OnItemChildClickListener(int clickIndex, int position) {
     8             this.clickIndex = clickIndex;
     9             this.rowItem = position;
    10         }
    11      
    12         /**
    13          * 点击缩略图事件
    14          */
    15         @Override
    16         public void onItemClick(AdapterView<?> parent, View view, int position, long id)
    17         {
    18             if (i) {
    19                 imgGroup = new ArrayList<ImageInfo>();
    20                 imgGroup = imageInfoMap.get(timeMap.get(rowItem));
    21                 Log.e("ListViewAdapter2", Integer.toString(position));
    22                 Log.i("ListItem position",Integer.toString(rowItem));
    23                 String fileName = imgGroup.get(position).getPath();
    24                 File file=new File(fileName);
    25                 Intent it =new Intent(Intent.ACTION_VIEW);
    26                 Uri mUri = Uri.parse("file://"+file.getPath());
    27                 it.setDataAndType(mUri, "image/*");
    28                 i = false;
    29                 activity.startActivity(it);
    30                 activity.finish();
    31             } else {
    32                 i = true;
    33             }
    34         }
    35     }
    36     //调用
    37     gv = (MyGridView) convertView.findViewById(R.id.gridview1);
    38     gv.setAdapter(new GridViewAdapter(context, position,timeMap,imageInfoMap));
    39     gv.setOnItemClickListener(new OnItemChildClickListener(0, position));

      不知道还有没有其他什么好的解决ListView的按键监听被子组件覆盖的方法,有待研究~

  • 相关阅读:
    所谓的小项目
    PHP开发者常犯的10个MySQL错误
    这是掌握cookie最后的一个障碍
    Lua学习笔记(2)——table
    Corona Enterprise 引入第三方 jar 包
    Lua学习笔记(1)
    SQL分页查询笔记
    三两句记录设计模式(1)——简单工厂模式
    Window + Net + Corona + IOS PUSH
    IoC学习
  • 原文地址:https://www.cnblogs.com/george-cw/p/3936930.html
Copyright © 2020-2023  润新知