对于ExpandableListView android没有提供child长按事件监听器,所以自己用以下方法通过普通的OnItemLongClickListener来实现。
private ExpandableListView mListView;
private BaseExpandableListAdapter mAdapter;
private OnItemLongClickListener mOnItemLongClickListener = new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
if (!mIsSelecting) {
int groupPosition = 0;
int childPosition = position;
int groupCount = mAdapter.getGroupCount();
for (int i = 0; i < groupCount; i++) {
groupPosition = i;
childPosition --;
if (childPosition < 0) {
break;
}
int showChildrenCount = 0;
if(mListView.isGroupExpanded(i)){
showChildrenCount = mAdapter.getChildrenCount(i);
}
if (showChildrenCount > childPosition) {
break;
} else {
childPosition -= showChildrenCount;
}
}
if (childPosition >= 0) {
onChildLongClick(view, groupPosition, childPosition);
}
}
return true;
}
};
private void onChildLongClick(View view, int groupPosition, int childPosition) {
//这里就是长按事件了
}