@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);
   }
 }