title: Using Picasso library with ListView
body: <p>What I'm trying to do is adapt my custom ListView adapter to use images fetched from the web by the Picasso library. I believe I have my adapter changed in order to accept an image from Picasso, but I am unsure how to change my implementation to accept it using a ListView. I believe I have to access holder.imageIcon, but I am not sure how to get it up and running. My code is as follows.</p>
  
  <p>History.java</p>
  
  <pre><code>public class History {
      public String score;
      public String gametype;
      public Picasso icon;
  
      public History() {
          super();
      }
  
      public History(String score, String gametype, Picasso icon) {
          super();
          this.score = score;
          this.gametype = gametype;
          this.icon = icon;
      }
  }
  </code></pre>
  
  <p>HistoryAdapter.java</p>
  
  <pre><code>public class HistoryAdapter extends ArrayAdapter&lt;History&gt; {
  
      Context context;
      int layoutResId;
      History data[] = null;
  
      public HistoryAdapter(Context context, int layoutResId, History[] data) {
          super(context, layoutResId, data);
          this.layoutResId = layoutResId;
          this.context = context;
          this.data = data;
      }
  
      @Override
      public View getView(int position, View convertView, ViewGroup parent) {
          HistoryHolder holder = null;
  
          if(convertView == null)
          {
              LayoutInflater inflater = ((Activity)context).getLayoutInflater();
              convertView = inflater.inflate(layoutResId, parent, false);
  
              holder = new HistoryHolder();
              holder.imageIcon = (ImageView)convertView.findViewById(R.id.icon);
              holder.textTitle = (TextView)convertView.findViewById(R.id.gameType);
              holder.textScore = (TextView)convertView.findViewById(R.id.score);
  
              convertView.setTag(holder);
          }
          else
          {
              holder = (HistoryHolder)convertView.getTag();
          }
  
          History history = data[position];
          holder.textScore.setText(history.score);
          holder.textTitle.setText(history.gametype);
          holder.imageIcon.setImageResource(history.icon);
  
  
          return convertView;
      }
  
      static class HistoryHolder
      {
          ImageView imageIcon;
          TextView textTitle;
          TextView textScore;
      }
  }
  </code></pre>
  
  <p>Implementation</p>
  
  <pre><code>History[] historyData = new History[games.length()];
  
  
  for(int i = 0; i &lt; games.length(); i++) {
                      JSONObject c = games.getJSONObject(i);
                      JSONObject gameStats = games.getJSONObject(i).getJSONObject(TAG_STATS);
                      type[i] = c.getString(TAG_TYPE);
                      champId[i] = c.getString("championId");
                      cs[i] = gameStats.getString("minionsKilled");
                      kills[i] = gameStats.getString("championsKilled");
                      deaths[i] = gameStats.getString("numDeaths");
                      assists[i] = gameStats.getString("assists");
                      win[i] = gameStats.getString("win");
  
                      if(win[i].equals("true"))
                          win[i] = "Victory";
                      else
                          win[i] = "Defeat";
  
                      if(type[i].equals("RANKED_SOLO_5x5"))
                          type[i] = "Ranked (Solo)";
  
                      if(type[i].equals("CAP_5x5"))
                          type[i] = "TeamBuilder";
  
                      if(type[i].equals("NORMAL"))
                          type[i] = "Unranked";
  
                      score[i] = kills[i] +"/" + deaths[i] + "/" + assists[i];
  
                      historyData[i] = new History(score[i], champId[i], R.drawable.ic_launcher); // Placeholder image
  
                  }
  
                  if(historyData == null) {
                      historyData[0] = new History("No game found", "N/A", R.drawable.ic_launcher); // Use Picasso placeholder
                      Log.i("Data", "" + historyData);
                  }
  
                  adapter = new HistoryAdapter(MatchHistoryActivity.this,
                          R.layout.list_adapter,
                          historyData);
  
                  list.setAdapter(adapter);
  </code></pre>
  
  <p>list_item.xml</p>
  
  <pre><code>&lt;RelativeLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="?android:attr/listPreferredItemHeight"
      android:background="#111111"
      android:padding="6dip" &gt;
  
      &lt;ImageView
          android:id="@+id/icon"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          android:layout_alignParentBottom="true"
          android:layout_alignParentTop="true"
          android:layout_marginRight="6dip"
          android:contentDescription="TODO"
          android:src="@drawable/ic_launcher" /&gt;
  
      &lt;TextView
          android:id="@+id/score"
          android:textColor="#C49246"
          android:layout_width="fill_parent"
          android:layout_height="26dip"
          android:layout_alignParentBottom="true"
          android:layout_alignParentRight="true"
          android:layout_marginLeft="5dp"
          android:layout_toRightOf="@id/icon"
          android:ellipsize="marquee"
          android:singleLine="true"
          android:text="0/0/0 KDA"
          android:textSize="12sp" /&gt;
  
      &lt;TextView
          android:id="@+id/gameType"
          android:textColor="#C49246"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:layout_above="@id/score"
          android:layout_alignParentRight="true"
          android:layout_alignParentTop="true"
          android:layout_alignWithParentIfMissing="true"
          android:layout_marginLeft="5dp"
          android:layout_toRightOf="@id/icon"
          android:gravity="center_vertical"
          android:textSize="16sp" /&gt;
  
  &lt;/RelativeLayout&gt;
  </code></pre>