public View getView(int position, View convertView, ViewGroup parent) { WeatherHolder holder; View row = convertView; // inflate the layout for a single row LayoutInflater layoutInflater = LayoutInflater.from(mContext); if (row == null) { // if the row has not been created before row = layoutInflater.inflate(mLayoutResourceId, parent, false); holder = new WeatherHolder(); // get a reference to all the different view elements we wish to update holder.day = (TextView) row.findViewById(R.id.dayTextView); holder.date = (TextView) row.findViewById(R.id.dateTextView); holder.tempMin = (TextView) row.findViewById(R.id.tempMinTextView); holder.tempMax = (TextView) row.findViewById(R.id.tempMaxTextView); holder.imageView = (ImageView) row.findViewById(R.id.imageView); row.setTag(holder); } else { holder = (WeatherHolder) row.getTag(); } // get the data from the data array Weather weather = mData[position]; // setting the view to the data we need to display holder.day.setText(weather.simpleDay(weather.getmDate())); holder.date.setText(weather.simpleDate(weather.getmDate())); holder.tempMin.setText( String.valueOf(weather.fahrenheitToCelsius(weather.getmTempMin())) + "°"); holder.tempMax.setText( String.valueOf(weather.fahrenheitToCelsius(weather.getmTempMax())) + "°"); int resId = mContext .getResources() .getIdentifier( weather.getEmoji(weather.getIcon()), "drawable", mContext.getPackageName()); holder.imageView.setImageResource(resId); // returning the row view(because this is called getView after all) return row; }