@Override
  public void setFocusableInTouchMode(boolean focusable) {
    final T adapter = getAdapter();
    final boolean empty = adapter == null || adapter.getCount() == 0;

    mDesiredFocusableInTouchModeState = focusable;
    if (focusable) {
      mDesiredFocusableState = true;
    }

    super.setFocusableInTouchMode(focusable && (!empty || isInFilterMode()));
  }
 void checkFocus() {
   final T adapter = getAdapter();
   final boolean empty = adapter == null || adapter.getCount() == 0;
   final boolean focusable = !empty || isInFilterMode();
   // The order in which we set focusable in touch mode/focusable may matter
   // for the client, see View.setFocusableInTouchMode() comments for more
   // details
   super.setFocusableInTouchMode(focusable && mDesiredFocusableInTouchModeState);
   super.setFocusable(focusable && mDesiredFocusableState);
   if (mEmptyView != null) {
     updateEmptyStatus((adapter == null) || adapter.isEmpty());
   }
 }