温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ExpandableListView长按GroupItem时,如何处理

发布时间:2020-07-30 08:55:45 来源:网络 阅读:575 作者:Spi08Breaker 栏目:开发技术

    onItemLongClick方法第二个参数:view,这里的view是你按中的位置对应的view。view有个方法getTag(int key)。如果在创建此view的时候就把groupPos,childPos通过setTag(int key, Object value)设置进去。

     要把groupPos,childPos通过setTag的方式绑定到view中,就必须操作该view的创建过程。要控制这个过程就必须要在自定义BaseExpandableListAdapter中重写getGroupView及getChildView方法进行操作。

 

@Override
 public View getChildView(int groupPosition, int childPosition,
   boolean isLastChild, View convertView, ViewGroup parent) {
  //我这里仅通过自己写的mkChildView()方法创建TextView来显示文字,更复杂的可以通过 LayoutInflater来填充一个view
  TextView childTv = mkChildView();
  // 标记位置
  // 必须使用资源Id当key(不是资源id会出现运行时异常),android本意应该是想用tag来保存资源id对应组件。
  // 将groupPosition,childPosition通过setTag保存,在onItemLongClick方法中就可以通过view参数直接拿到了!
      childTv.setTag(R.id.xxx01, groupPosition);
      childTv.setTag(R.id.xxx02, childPosition);
      return childTv;
 }
 @Override
 public View getGroupView(int groupPosition, boolean isExpanded,
   View convertView, ViewGroup parent) {
    TextView groupTv = mkGroupView();
     // 设置同getChildView一样
     groupTv.setTag(R.id.xxx01, groupPosition);
     groupTv.setTag(R.id.xxx02, -1); //设置-1表示长按时点击的是父项,到时好判断。
     groupTv.setText(groups[groupPosition]);
     return groupTv;
 }

详细出处参考:http://www.jb51.net/article/38521.htm

 

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI