code: public boolean selectItem(int dataIndex, boolean select) {
          Log.d(Log.SUBSYSTEM.LAYOUT, TAG, "selectItem [%d] select [%b]", dataIndex, select);
          if (dataIndex < 0 || dataIndex >= mItemAdapter.getCount()) {
              throw new IndexOutOfBoundsException("Selection index [" + dataIndex + "] is out of bounds!");
          }
  
          boolean done = updateSelectedItemsList(dataIndex, select);
  
          if (done) {
              List<Widget> views = new ArrayList<>();
  
              if (mItemsPerPage >= 0) {
                  int pageIndex = dataIndex / mItemsPerPage;
                  Widget view = getListView(pageIndex);
                  if (view != null) {
                      views.add(view);
                  }
              } else {
                  views = getAllViews();
              }
  
              for (Widget view: views) {
                  if (selectItem(((ListWidget) view), dataIndex, select)) {
                      requestLayout();
                      break;
                  }
              }
          }
  
          return done;
      }
docs: Select or deselect an item at position {@code pos}.
  
  @param dataIndex
  item position in the adapter
  @param select
  operation to perform select or deselect.
  @return {@code true} if the requested operation is successful,
  {@code false} otherwise.