title: Force RecyclerView to call onCreateViewHolder
body: <p>I have a <code>RecyclerView</code> that can show items as list, small grids or large grid and this can be change at runtime. Depending on what style user chooses i inflate different layout in <code>onCreateViewHolder</code>. 
  <p>
  I also use <code>layoutManger.setSpanSizeLookUp()</code> to switch between styles. My code looks like this</p>
  
  <pre><code>layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
          @Override
          public int getSpanSize(int position) {
              if(showType == ProductAdapter.SHOW_TYPE_SMALL_GRID)
                  return 1;
              else
                  return columnCount; //show one item per row
          }
      });
  
  @Override
  public void onClick(View v) {
      if(showType == ProductAdapter.SHOW_TYPE_SMALL_GRID)
          showType = ProductAdapter.SHOW_TYPE_LARGE_GRID;
      else
          showType = ProductAdapter.SHOW_TYPE_SMALL_GRID;
  
  
      int firstVisibleItem = layoutManager.findFirstVisibleItemPosition();
      adapter = new ProductAdapter(getActivity(), productList, showType);
      recyclerView.setAdapter(adapter);
      layoutManager.scrollToPosition(firstVisibleItem);
  }
  </code></pre>
  
  <p>The problem is to force <code>onCreateViewHolder</code> to be called I'm creating a new object every time user changes the style. Is there any other way?! to force <code>onBindViewHolder()</code> to be recalled. I simply use <code>adapter.notifyDataSetChanged()</code> How can i get something similar for <code>onCreateViewHolder?</code>
  <p>
  Any solution that doesn't uses multiple adapters is good enough!  </p>