title: Scrolling through ListView with some images very laggy
body: <p>I've got the below screen that contains some images (6 per visible page). Scrolling up and down seems quite laggy to me. It's like it's rendering the images again. Scrolling back up seems worse than scrolling down.</p>
  
  <p>Anyone know how to increase performance in such an area to create a nice smooth scroll?</p>
  
  <p><strong>Update</strong>: The images and text is all retrieved from my SQLite database. The list is created using SimpleCursorAdapter.</p>
  
  <p><img src="https://i.stack.imgur.com/pMhDh.png" alt="Gallery"></p>
  
  <pre><code>private class HistoryViewBinder implements SimpleCursorAdapter.ViewBinder 
  {
      //private int wallpaperNumberIndex;
      private int timeIndex;
      private int categoryIndex;
      private int imageIndex;
  
      private java.text.DateFormat dateFormat;
      private java.text.DateFormat timeFormat;
      private Date d = new Date();
  
      public HistoryViewBinder(Context context, Cursor cursor) 
      {
          dateFormat = android.text.format.DateFormat.getDateFormat(context);
          timeFormat = android.text.format.DateFormat.getTimeFormat(context);
  
          //wallpaperNumberIndex = cursor.getColumnIndexOrThrow(HistoryDatabase.KEY_WALLPAPER_NUMBER);
          timeIndex = cursor.getColumnIndexOrThrow(HistoryDatabase.KEY_TIME);
          categoryIndex = cursor.getColumnIndexOrThrow(HistoryDatabase.KEY_CATEGORY);
          imageIndex = cursor.getColumnIndexOrThrow(HistoryDatabase.KEY_IMAGE);
      }
  
      @Override
      public boolean setViewValue(View view, Cursor cursor, int columnIndex) 
      {
          Log.d(TAG, "setViewValue");
  
          if (view instanceof TextView)
          {
              Log.d(TAG, "TextView");
              TextView tv = (TextView) view;
  
              if (columnIndex == timeIndex)
              {
                  Log.d(TAG, "timeIndex");
                  d.setTime(cursor.getLong(columnIndex));
                  tv.setText(timeFormat.format(d) + "  " + dateFormat.format(d));
                  return true;
              }
              else if (columnIndex == categoryIndex)
              {
                  Log.d(TAG, "categoryIndex");
                  tv.setText(cursor.getString(columnIndex));
                  return true;
              }
          }
          else if (view instanceof ImageView)
          {
              Log.d(TAG, "ImageView");
              ImageView iv = (ImageView) view;
  
              if (columnIndex == imageIndex)
              {
                  Log.d(TAG, "imageIndex");
                  byte[] image = cursor.getBlob(columnIndex);
                  Bitmap bitmapImage = BitmapFactory.decodeByteArray(image, 0, image.length);
                  iv.setImageBitmap(bitmapImage);
                  return true;
              }
          }
  
          return false;
      }
  }
  </code></pre>