Instead of implementing onClickListener in adapter attach one in getChildView itself where you will have access to childPosition and groupPosition
@Override
public View getChildView(final int groupPosition,final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String childText = (String) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
}
TextView txtListChild = (TextView) convertView
.findViewById(R.id.item_text);
Button button = (Button) convertView.findViewById(R.id.item_button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//here inside you can user groupPosition, childPosition
// TODO Auto-generated method stub
//groupPosition, childPosition
Toast.makeText(getContext(), "groupPosition: "+groupPosition +" childPosition: "+ childPosition,Toast.LENGTH_SHORT).show();
}
});
txtListChild.setText(childText);
return convertView;
}