ExpandableListView长按GroupItem时,如何处理
onItemLongClick方法第二个参数:view,这里的view是你按中的位置对应的view。view有个方法getTag(intkey)。如果在创建此view的时候就把groupPos,childPos通过setTag(intkey,Objectvalue)设置进去。
要把groupPos,childPos通过setTag的方式绑定到view中,就必须操作该view的创建过程。要控制这个过程就必须要在自定义BaseExpandableListAdapter中重写getGroupView及getChildView方法进行操作。
@Override
publicViewgetChildView(intgroupPosition,intchildPosition,
booleanisLastChild,ViewconvertView,ViewGroupparent){
//我这里仅通过自己写的mkChildView()方法创建TextView来显示文字,更复杂的可以通过LayoutInflater来填充一个view
TextViewchildTv=mkChildView();
//标记位置
//必须使用资源Id当key(不是资源id会出现运行时异常),android本意应该是想用tag来保存资源id对应组件。
//将groupPosition,childPosition通过setTag保存,在onItemLongClick方法中就可以通过view参数直接拿到了!
childTv.setTag(R.id.xxx01,groupPosition);
childTv.setTag(R.id.xxx02,childPosition);
returnchildTv;
}
@Override
publicViewgetGroupView(intgroupPosition,booleanisExpanded,
ViewconvertView,ViewGroupparent){
TextViewgroupTv=mkGroupView();
//设置同getChildView一样
groupTv.setTag(R.id.xxx01,groupPosition);
groupTv.setTag(R.id.xxx02,-1);//设置-1表示长按时点击的是父项,到时好判断。
groupTv.setText(groups[groupPosition]);
returngroupTv;
}
详细出处参考:http://www.jb51.net/article/38521.htm
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。