ExpandableListView长按GroupItem时,如何处理

    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

 

你可能感兴趣的:(object,public,parent)