title: Setting the background image of a CardView inside RecyclerView causes the program to crash when scrolling
body: <p>I have a RecyclerView containing a list of CardViews with information that is pulled from a server, some cards have only a background color but some contains a background image.  If the cards all have just background colors, the RecyclerView behaves accordingly (I am able to set the margins and corner radius as well).  However, if any one card contains a background image, a crash will happen when I try to scroll up/down the list (although the background image will load without the previously set corner radius).</p>
  
  <p>Here is the crash log:</p>
  
  <pre class="lang-java prettyprint-override"><code>java.lang.ClassCastException: android.graphics.drawable.BitmapDrawable cannot be cast to android.support.v7.widget.RoundRectDrawable
          at android.support.v7.widget.CardViewApi21.setBackgroundColor(CardViewApi21.java:107)
          at android.support.v7.widget.CardView.setCardBackgroundColor(CardView.java:234)
          at co.roverlabs.sdk.ui.CardListAdapter.onBindViewHolder(CardListAdapter.java:88)
          at co.roverlabs.sdk.ui.CardListAdapter.onBindViewHolder(CardListAdapter.java:28)
          at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:4402)
          at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:3717)
          at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:3609)
          at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1859)
          at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1311)
          at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1274)
          at android.support.v7.widget.LinearLayoutManager.scrollBy(LinearLayoutManager.java:1102)
          at android.support.v7.widget.LinearLayoutManager.scrollVerticallyBy(LinearLayoutManager.java:959)
          at android.support.v7.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:3062)
          at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
          at android.view.Choreographer.doCallbacks(Choreographer.java:580)
          at android.view.Choreographer.doFrame(Choreographer.java:549)
          at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
          at android.os.Handler.handleCallback(Handler.java:739)
          at android.os.Handler.dispatchMessage(Handler.java:95)
          at android.os.Looper.loop(Looper.java:135)
          at android.app.ActivityThread.main(ActivityThread.java:5254)
          at java.lang.reflect.Method.invoke(Native Method)
          at java.lang.reflect.Method.invoke(Method.java:372)
          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
  </code></pre>
  
  <p>Here is my onBindViewHolder() method (simplified with hard coded values for easier reading):</p>
  
  <pre class="lang-java prettyprint-override"><code>public void onBindViewHolder(final CardViewHolder holder, int position) {
  
      //Set margins
      CardView.LayoutParams cardLayoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 2000);
      cardLayoutParams.setMargins(20, 20, 20, 20);
      holder.cardView.setLayoutParams(cardLayoutParams);
  
      //Set background color or image
      if(view.hasBackgroundImage()) {
          holder.cardView.setBackground(R.drawable.background);
      }
      else {
          holder.cardView.setCardBackgroundColor(Color.CYAN);
      }
  
      //Set border radius
      holder.cardView.setRadius(20);
  
      //Set elevation
      holder.cardView.setCardElevation(0);
  </code></pre>
  
  <p>Here is my onCreateViewHolder() method and custom Recycler.ViewHolder method:</p>
  
  <pre class="lang-java prettyprint-override"><code>public CardViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  
      View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_view, parent, false);
      return new CardViewHolder(itemView);
  }
  
  public class CardViewHolder extends RecyclerView.ViewHolder {
  
      protected CardView cardView;
  
      public CardViewHolder(View view) {
  
          super(view);
          cardView = (CardView)view.findViewById(R.id.single_card_view);
      }
  }
  </code></pre>
  
  <p>And finally, here is my XML file for the CardView:</p>
  
  <pre class="lang-xml prettyprint-override"><code>&lt;android.support.v7.widget.CardView
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/single_card_view"
      android:layout_width="match_parent"
      android:layout_height="match_parent" &gt;
  
      &lt;RelativeLayout
          android:id="@+id/single_card_view_layout"
          android:layout_width="match_parent"
          android:layout_height="match_parent"&gt;
  
      &lt;/RelativeLayout&gt;
  
  &lt;/android.support.v7.widget.CardView&gt;
  </code></pre>
  
  <p>I just wish to know how to set the background of a CardView to a custom image instead of just a color, and if there are any workarounds.  It is important for me to be able to set the corner radius of the cards.  Thank you!</p>