@Override public boolean performItemClick(View view, int position, long id) { OnItemClickListener listener = getOnItemClickListener(); int headerViewsCount = getHeaderViewsCount(); final int viewType = adapter.getItemViewType(position - headerViewsCount); if (viewType == adapter.headerViewType) { if (onHeaderClickListener != null) { position = adapter.translateListViewPosition(position - headerViewsCount); onHeaderClickListener.onHeaderClick(this, view, position, id, false); return true; } return false; } else if (viewType == adapter.dividerViewType) { return false; } else { if (listener != null) { if (position >= adapter.getCount()) { position -= adapter.getHeaderCount(); } else if (!(position < headerViewsCount)) { position = adapter.translateListViewPosition(position - headerViewsCount) + headerViewsCount; } listener.onItemClick(this, view, position, id); return true; } return false; } }
@Override public boolean onItemLongClick(AdapterView<?> l, View v, int position, long id) { if (onItemLongClickListenerDelegate != null) { return onItemLongClickListenerDelegate.onItemLongClick( l, v, adapter.translateListViewPosition(position), id); } return false; }
@Override protected ContextMenuInfo getContextMenuInfo() { AdapterContextMenuInfo info = (android.widget.AdapterView.AdapterContextMenuInfo) super.getContextMenuInfo(); info.position = adapter.translateListViewPosition(info.position - getHeaderViewsCount()); info.position += getHeaderViewsCount(); return info; }
@Override public SparseBooleanArray getCheckedItemPositions() { SparseBooleanArray superCheckeditems = super.getCheckedItemPositions(); if (adapter != null && !isCalledFromSuper() && superCheckeditems != null) { SparseBooleanArray checkeditems = new SparseBooleanArray(superCheckeditems.size()); for (int i = 0; i < superCheckeditems.size(); i++) { int key = adapter.translateListViewPosition(superCheckeditems.keyAt(i)); boolean value = superCheckeditems.valueAt(i); checkeditems.put(key, value); } return checkeditems; } return superCheckeditems; }