code: public final void setDatas(@NonNull Iterable<? extends Data<?>> datas) {
          checkNotNull(datas, "datas");
          mDataWatcher.setDatas(datas);
          mDatas.clear();
          for (Data<?> data : datas) {
              mDatas.add(data);
          }
          // Clear error message, because the caller expects the view state to be reset when all datas change
          if (mDatas.isEmpty()) {
              mErrorMessage = null;
          }
          updateViews();
      }
docs: Connects this view to the specified {@link Data} instances, so it can observe their loading/error/empty state
  and adjust child view visibility accordingly.
  @param datas The data instances to observe, which may be empty to cease observing anything.