title: RecyclerView with Pictures and Strings as Data Types
body: <p>I am making an app with a RecyclerView that needs to display 2 image views, and 3 text views. I follows the tutorials on the developers.android.com website, and it worked. Then I tried to edit the adaptor and now my activity doesn't work.</p>
  
  <p>Here is my adaptor .java file:</p>
  
  <pre><code>package com.winansbros.soccerpredictor;
  
  import android.graphics.drawable.Drawable;
  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.LinearLayout;
  import android.widget.TextView;
  
  
  public class MyAdapter extends RecyclerView.Adapter&lt;MyAdapter.ViewHolder&gt; {
  private String[] mDataset1;
  private String[] mDataset2;
  private String[] mDataset3;
  private Drawable[] mDataset4;
  private Drawable[] mDataset5;
  
  // Provide a reference to the views for each data item
  // Complex data items may need more than one view per item, and
  // you provide access to all the views for a data item in a view holder
  public static class ViewHolder extends RecyclerView.ViewHolder {
      // each data item is just a string in this case
  
      public TextView team1textview;
      public TextView team2textview;
      public TextView scoretextview;
      public ImageView team1imageview;
      public ImageView team2imageview;
  
      public ViewHolder(View v) {
          super(v);
          team1textview = (TextView) v.findViewById(R.id.team1name);
          team2textview = (TextView) v.findViewById(R.id.team2name);
          scoretextview = (TextView) v.findViewById(R.id.card1score);
          team1imageview = (ImageView) v.findViewById(R.id.team1imageview);
          team2imageview = (ImageView) v.findViewById(R.id.team2imageview);
      }
  }
  
  // Provide a suitable constructor (depends on the kind of dataset)
  public MyAdapter(String[] myDataset, String[] myDataset2, String[] myDataset3, Drawable[] myDataset4, Drawable[] myDataset5) {
      mDataset1 = myDataset;
      mDataset2 = myDataset2;
      mDataset3 = myDataset3;
      mDataset4 = myDataset4;
      mDataset5 = myDataset5;
  }
  
  // Create new views (invoked by the layout manager)
  @Override
  public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
                                                 int viewType) {
      // create a new view
      View v = LayoutInflater.from(parent.getContext())
              .inflate(R.layout.cardviewwidget, parent, false);
      // set the view's size, margins, paddings and layout parameters
      LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
      layoutParams.setMargins(10, 20, 10, 20);
      v.setLayoutParams(layoutParams);
  
      ViewHolder vh = new ViewHolder(v);
      return vh;
  }
  
  // Replace the contents of a view (invoked by the layout manager)
  @Override
  public void onBindViewHolder(ViewHolder holder, int position) {
      // - get element from your dataset at this position
      // - replace the contents of the view with that element
      holder.team1textview.setText(mDataset1[position]);
      holder.team2textview.setText(mDataset2[position]);
      holder.scoretextview.setText(mDataset3[position]);
      holder.team1imageview.setImageDrawable(mDataset4[position]);
      holder.team2imageview.setImageDrawable(mDataset5[position]);
  }
  
  // Return the size of your dataset (invoked by the layout manager)
  @Override
  public int getItemCount() {
      return mDataset1.length;
  }
  }
  </code></pre>
  
  <p>Here is my History activity .java file</p>
  
  <pre><code>package com.winansbros.soccerpredictor;
  
  import android.app.Activity;
  import android.content.Context;
  import android.content.Intent;
  import android.content.res.Resources;
  import android.content.res.TypedArray;
  import android.database.Cursor;
  import android.graphics.drawable.Drawable;
  import android.os.Bundle;
  import android.support.v7.widget.LinearLayoutManager;
  import android.support.v7.widget.RecyclerView;
  import android.util.Log;
  import android.view.View;
  import android.widget.Button;
  import java.util.ArrayList;
  import java.util.List;
  import com.google.android.gms.ads.AdRequest;
  import com.google.android.gms.ads.AdView;
  
  public class History extends Activity {
  
  Context CTX = this;
  
  AdView mAdView;
  AdRequest adRequest;
  
  Button clearButton;
  Button tipsButton;
  
  StringBuilder sb;
  DatabaseOperations DOP;
  
  Integer team1image;
  Integer team2image;
  
  TypedArray imgs;
  
  List&lt;String&gt; winners;
  List&lt;String&gt; hometeams;
  List&lt;String&gt; awayteams;
  List&lt;String&gt; scores;
  List&lt;Drawable&gt; homeimages;
  List&lt;Drawable&gt; awayimages;
  
  private RecyclerView mRecyclerView;
  private RecyclerView.Adapter mAdapter;
  private RecyclerView.LayoutManager mLayoutManager;
  
  Resources res;
  
  public void onCreate(Bundle savedInstanceState) {
  
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_history);
  
      res = getResources();
  
      DOP = new DatabaseOperations(CTX);
      Cursor CR = DOP.getInformation(DOP);
      CR.moveToFirst();
  
      winners = new ArrayList&lt;&gt;();
      hometeams = new ArrayList&lt;&gt;();
      awayteams = new ArrayList&lt;&gt;();
      scores = new ArrayList&lt;&gt;();
      homeimages = new ArrayList&lt;&gt;();
      awayimages = new ArrayList&lt;&gt;();
  
      if( CR.moveToFirst() ) {
          getHistory();
      }
  
      mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
  
      mRecyclerView.setHasFixedSize(true);
  
      mLayoutManager = new LinearLayoutManager(CTX);
      mRecyclerView.setLayoutManager(mLayoutManager);
  
      String[] myDataset = hometeams.toArray(new String[hometeams.size()]);
      String[] myDataset2 = awayteams.toArray(new String[awayteams.size()]);
      String[] myDataset3 = scores.toArray(new String[scores.size()]);
      Drawable[] myDataset4 = homeimages.toArray(new Drawable[homeimages.size()]);
      Drawable[] myDataset5 = awayimages.toArray(new Drawable[awayimages.size()]);
  
  
      mAdapter = new MyAdapter(myDataset, myDataset2, myDataset3, myDataset4, myDataset5);
      mRecyclerView.setAdapter(mAdapter);
  
      clearButton = (Button) findViewById(R.id.clearSQLite);
      tipsButton = (Button) findViewById(R.id.TipsButton);
  
      mAdView = (AdView) findViewById(R.id.adView);
      adRequest = new AdRequest.Builder()
              .addTestDevice("8AC41E108CD62B7703FF28358AEEC8BC")
              .build();
      mAdView.loadAd(adRequest);
  
      Log.d("Progress", "Far");
  
      clearButton.setOnClickListener(new View.OnClickListener()
      {
          @Override
          public void onClick(View v)
          {
              DatabaseOperations DOB = new DatabaseOperations(CTX);
              DOB.DeleteInformation(CTX);
              DOB.close();
              finish();
          }
      });
  
      Log.d("Progress", "First On Click Listener");
  
      //sb = new StringBuilder();
  
      //historyTextView = (TextView) findViewById(R.id.historyText);
      //historyTextView.setMovementMethod(new ScrollingMovementMethod());
  
  
  
      tipsButton.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              Intent intent = new Intent(getApplicationContext(), TipsActivity.class);
              startActivity(intent);
          }
      });
  
      Log.d("Progress", "second On Click Listener");
  
      DOP.close();
  }
  
  public void getHistory() {
      Log.i("GetHistory", "Initialized");
  
      Cursor CR = DOP.getInformation(DOP);
      CR.moveToFirst();
  
  
      do {
          winners.add(CR.getString(0));
          hometeams.add(CR.getString(1));
          awayteams.add(CR.getString(2));
          scores.add(CR.getString(3));
          Log.d("Cloud Files", "OBJECT ID SET");
  
      } while (CR.moveToNext());
  
      Log.d("GetHistory", "Lists all set");
  
      int size = winners.size();
  
      for (int i = 0; i &lt; size; i++)
      {
          if (hometeams.get(i) == "Arsenal")
          {
              int resID = res.getIdentifier("arsenal", "drawable", getPackageName());
              homeimages.add(res.getDrawable(resID));
          }
          ...
  
          if (awayteams.get(i) == "Arsenal")
          {
              int resID = res.getIdentifier("arsenal", "drawable", getPackageName());
              awayimages.add(res.getDrawable(resID));
          }
  
          if (awayteams.get(i) == "West Ham")
          {
              int resID = res.getIdentifier("westham", "drawable", getPackageName());
              awayimages.add(res.getDrawable(resID));
          }
      }
  
      Log.d("GetHistory", "Images set");
  
      Log.d("Cloud Files", Integer.toString(size));
  
      Log.d("Cloud Files", awayimages.get(0).toString());
  
  }
  }
  </code></pre>
  
  <p>here is the cardview that is being used in the adaptor:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              xmlns:card_view="http://schemas.android.com/apk/res-auto"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical"&gt;
  
  &lt;android.support.v7.widget.CardView
  tools:context="com.winansbros.soccerpredictor.History"
  android:id="@+id/card_view"
  android:layout_gravity="center"
  card_view:cardCornerRadius="4dp"
  card_view:cardElevation="10dp"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"&gt;
  
  &lt;RelativeLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"&gt;
  
      &lt;ImageView
          android:layout_width="60dp"
          android:layout_height="60dp"
          android:id="@+id/team1imageview"
          android:layout_alignParentTop="true"/&gt;
  
      &lt;TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:id="@+id/team1name"
          android:layout_centerVertical="true"
          android:layout_below="@+id/team2name"
          android:layout_toRightOf="@+id/team1imageview"
          android:layout_toEndOf="@+id/team1imageview"
          android:width="100dp"/&gt;
      &lt;TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:id="@+id/card1score"
          android:width="20dp"
          android:layout_centerVertical="true"
          android:layout_alignTop="@+id/team1name"
          android:layout_toRightOf="@+id/team1name"
          android:layout_toEndOf="@+id/team1name"/&gt;
      &lt;TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:id="@+id/team2name"
          android:width="100dp"
          android:layout_centerVertical="true"
          android:layout_toLeftOf="@+id/team2imageview"
          android:layout_toStartOf="@+id/team2imageview"/&gt;
      &lt;ImageView
          android:layout_width="60dp"
          android:layout_height="60dp"
          android:id="@+id/team2imageview"
          android:layout_centerVertical="true"
          android:layout_alignParentEnd="true"
          android:layout_alignParentRight="true"/&gt;
  
  &lt;/RelativeLayout&gt;
  
  &lt;/android.support.v7.widget.CardView&gt;
  
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>Here is the History Activity XML file:</p>
  
  <pre><code>&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
  xmlns:ads="http://schemas.android.com/apk/res-auto" xmlns:card_view="http://schemas.android.com/apk/res-auto"
  android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
  android:paddingRight="@dimen/activity_horizontal_margin"
  android:paddingTop="@dimen/activity_vertical_margin"
  android:paddingBottom="@dimen/activity_vertical_margin"&gt;
  
      &lt;com.google.android.gms.ads.AdView
          android:id="@+id/adView"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_centerHorizontal="true"
          android:layout_alignParentBottom="true"
          ads:adSize="BANNER"
          ads:adUnitId="@string/banner_ad_unit_id"&gt;
      &lt;/com.google.android.gms.ads.AdView&gt;
  
      &lt;Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Clear History"
          android:id="@+id/clearSQLite"
          android:layout_above="@+id/adView"
          android:layout_alignParentLeft="true"
          android:layout_alignParentStart="true"
          android:width="150dp" /&gt;
  
      &lt;Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="Tips"
          android:id="@+id/TipsButton"
          android:width="150dp"
          android:layout_above="@+id/adView"
          android:layout_alignParentRight="true"
          android:layout_alignParentEnd="true"/&gt;
  
  &lt;android.support.v7.widget.RecyclerView
      android:id="@+id/my_recycler_view"
      android:scrollbars="vertical"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_above="@+id/clearSQLite"/&gt;
  
  &lt;/RelativeLayout&gt;
  </code></pre>
  
  <p>And finally, the logcat: </p>
  
  <pre><code>...
  06-13 16:51:47.510    2085-2085/com.winansbros.soccerpredictor I/GetHistory﹕ Initialized
  06-13 16:51:47.510    2085-2085/com.winansbros.soccerpredictor D/Cloud Files﹕ OBJECT ID SET
  06-13 16:51:47.511    2085-2085/com.winansbros.soccerpredictor D/Cloud Files﹕ OBJECT ID SET
  06-13 16:51:47.511    2085-2085/com.winansbros.soccerpredictor D/GetHistory﹕ Lists all set
  06-13 16:51:47.511    2085-2085/com.winansbros.soccerpredictor D/GetHistory﹕ Images set
  06-13 16:51:47.511    2085-2085/com.winansbros.soccerpredictor D/Cloud Files﹕ 2
  06-13 16:51:47.511    2085-2085/com.winansbros.soccerpredictor D/AndroidRuntime﹕ Shutting down VM
  06-13 16:52:07.545    2085-2095/com.winansbros.soccerpredictor I/art﹕ Thread[5,tid=2095,WaitingInMainSignalCatcherLoop,Thread*=0xb4a33c00,peer=0x12c000a0,"Signal Catcher"]: reacting to signal 3
  06-13 16:52:07.545    2085-2095/com.winansbros.soccerpredictor I/art﹕ [ 06-13 16:52:07.745   546:  569 I/Process  ]
  Sending signal. PID: 546 SIG: 3
  </code></pre>