title: update recyclerview contents fail in the bottom sheet
body: <p>I want to change the list contents in a bottom sheet view though click event, but I only got empty sheet. Here is a demo modified from BottomSheetSample(github.com/niravkalola/BottomSheetSample).</p>
  
  <p><strong>mainActivity.java</strong></p>
  
  <pre><code>package com.nkdroid.bottomsheetsample;
  
  import android.content.DialogInterface;
  import android.os.Bundle;
  import android.support.annotation.NonNull;
  import android.support.design.widget.BottomSheetBehavior;
  import android.support.design.widget.BottomSheetDialog;
  import android.support.v7.app.AppCompatActivity;
  import android.support.v7.widget.LinearLayoutManager;
  import android.support.v7.widget.RecyclerView;
  import android.view.View;
  import android.widget.Button;
  
  import java.util.ArrayList;
  import java.util.List;
  import java.util.Random;
  
  public class MainActivity extends AppCompatActivity implements    ItemAdapter.ItemListener {
  
  private Button btnView, btnDialog;
  BottomSheetBehavior behavior;
  private BottomSheetDialog mBottomSheetDialog;
  private ItemAdapter mAdapter;
  RecyclerView recyclerView;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
  
      btnView = (Button) findViewById(R.id.btnView);
      btnDialog = (Button) findViewById(R.id.btnDialog);
      btnView.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              mAdapter = new ItemAdapter(createItems());
              recyclerView.setAdapter(mAdapter);
              behavior.setState(BottomSheetBehavior.STATE_EXPANDED);
          }
      });
  
      btnDialog.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              showBottomSheetDialog();
          }
      });
  
      View bottomSheet = findViewById(R.id.bottom_sheet);
      behavior = BottomSheetBehavior.from(bottomSheet);
      behavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
          @Override
          public void onStateChanged(@NonNull View bottomSheet, int newState) {
              // React to state change
          }
  
          @Override
          public void onSlide(@NonNull View bottomSheet, float slideOffset) {
              // React to dragging events
          }
      });
  
      recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
      recyclerView.setHasFixedSize(true);
      recyclerView.setLayoutManager(new LinearLayoutManager(this));
  
      mAdapter = new ItemAdapter(createItems(), this);
      recyclerView.setAdapter(mAdapter);
  
  }
  
  
  private void showBottomSheetDialog() {
      if (behavior.getState() == BottomSheetBehavior.STATE_EXPANDED) {
          behavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
      }
  
      mBottomSheetDialog = new BottomSheetDialog(this);
      View view = getLayoutInflater().inflate(R.layout.sheet, null);
      RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
      recyclerView.setHasFixedSize(true);
      recyclerView.setLayoutManager(new LinearLayoutManager(this));
      recyclerView.setAdapter(new ItemAdapter(createItems(), new ItemAdapter.ItemListener() {
          @Override
          public void onItemClick(Item item) {
              if (mBottomSheetDialog != null) {
                  mBottomSheetDialog.dismiss();
              }
          }
      }));
  
      mBottomSheetDialog.setContentView(view);
      mBottomSheetDialog.show();
      mBottomSheetDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
          @Override
          public void onDismiss(DialogInterface dialog) {
              mBottomSheetDialog = null;
          }
      });
  }
  
  
  @Override
  protected void onDestroy() {
      super.onDestroy();
      mAdapter.setListener(null);
  }
  
  public List&lt;Item&gt; createItems() {
      Random r = new Random();
      ArrayList&lt;Item&gt; items = new ArrayList&lt;&gt;();
      items.add(new Item(R.mipmap.ic_launcher, "Item 1"+ r.nextInt(100)));
      items.add(new Item(R.mipmap.ic_launcher, "Item 2"));
      items.add(new Item(R.mipmap.ic_launcher, "Item 3"));
      items.add(new Item(R.mipmap.ic_launcher, "Item 4"));
      return items;
  }
  
  @Override
  public void onItemClick(Item item) {
      behavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
  }
  
  }
  </code></pre>
  
  <p><strong>ItemAdapter.java:</strong></p>
  
  <pre><code>package com.nkdroid.bottomsheetsample;
  
  import android.support.v7.widget.RecyclerView;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.ImageView;
  import android.widget.TextView;
  import java.util.List;
  
  
  public class ItemAdapter extends RecyclerView.Adapter&lt;ItemAdapter.ViewHolder&gt; {
  
  private List&lt;Item&gt; mItems;
  private ItemListener mListener;
  
  public ItemAdapter(List&lt;Item&gt; items, ItemListener listener) {
      mItems = items;
      mListener = listener;
  }
  
  public ItemAdapter(List&lt;Item&gt; items) {
      mItems = items;
  }
  
  public void setListener(ItemListener listener) {
      mListener = listener;
  }
  
  @Override
  public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
      return new ViewHolder(LayoutInflater.from(parent.getContext())
              .inflate(R.layout.adapter, parent, false));
  }
  
  @Override
  public void onBindViewHolder(ViewHolder holder, int position) {
      holder.setData(mItems.get(position));
  }
  
  @Override
  public int getItemCount() {
      return mItems.size();
  }
  
  public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
  
      public ImageView imageView;
      public TextView textView;
      public Item item;
  
      public ViewHolder(View itemView) {
          super(itemView);
          itemView.setOnClickListener(this);
          imageView = (ImageView) itemView.findViewById(R.id.imageView);
          textView = (TextView) itemView.findViewById(R.id.textView);
      }
  
      public void setData(Item item) {
          this.item = item;
          imageView.setImageResource(item.getDrawableResource());
          textView.setText(item.getTitle());
      }
  
      @Override
      public void onClick(View v) {
          if (mListener != null) {
              mListener.onItemClick(item);
          }
      }
  }
  
  public interface ItemListener {
      void onItemClick(Item item);
  }
  }
  </code></pre>
  
  <p>Here are the capture after click <em>show view</em> button for the first and second time:
  <a href="https://i.stack.imgur.com/4TZCw.png" rel="noreferrer">first click</a>
  <a href="https://i.stack.imgur.com/BW3WY.png" rel="noreferrer">second click</a></p>