@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 void setItemChecked(int position, boolean value) { if (!isCalledFromSuper()) { position = adapter.translateAdapterPosition(position); } // only real items are checkable int viewtype = adapter.getItemViewType(position); if (viewtype != adapter.dividerViewType && viewtype != adapter.headerViewType) { super.setItemChecked(position, value); } }