code: @SuppressWarnings("unchecked")
      public void setAdapter(@Nullable AdaptiveTableAdapter adapter) {
          if (mAdapter != null) {
              // remove observers from old adapter
              mAdapter.unregisterDataSetObserver(this);
          }
  
          if (adapter != null) {
              // wrap adapter
              mAdapter = new LinkedAdaptiveTableAdapterImpl<>(adapter, mSettings.isSolidRowHeader());
              // register notify callbacks
              mAdapter.registerDataSetObserver(this);
              adapter.registerDataSetObserver(new DataSetObserverProxy(mAdapter));
          } else {
              // remove adapter
              mAdapter = null;
          }
          initItems();
      }
docs: Set adapter with IMMUTABLE data.
  Create wrapper with links between layout rows, columns and data rows, columns.
  On drag and drop event just change links but not change data in adapter.
  
  @param adapter AdaptiveTableLayout adapter