public static void updateItemView(
      Context context, Cursor cursor, RemoteViews rv, DateFormat mTimeFormat) {
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
    boolean customColors =
        prefs.getBoolean(context.getString(R.string.use_custom_colors_key), false);

    rv.setTextViewText(R.id.city_text, cursor.getString(cursor.getColumnIndex(Clocks.CITY)));

    String id = cursor.getString(cursor.getColumnIndex(Clocks.TIMEZONE_ID));
    if (SANS_JELLY_BEAN_MR1) {
      Date date = new Date();
      TimeZone tz = TimeZone.getTimeZone(id);
      rv.setTextViewText(R.id.time_text, TimeZoneInfo.showTime(tz, date, mTimeFormat, true));
    } else {
      RemoteViewUtil.setTextClockTimeZone(rv, R.id.time_text, id);
    }

    rv.setTextViewText(
        R.id.condition_text, cursor.getString(cursor.getColumnIndex(Clocks.WEATHER_CONDITION)));

    String temperature = BindHelper.getTemperature(context, cursor, false);
    rv.setTextViewText(R.id.temp_text, temperature);

    int condCode = cursor.getInt(cursor.getColumnIndex(Clocks.CONDITION_CODE));
    double lat = cursor.getDouble(cursor.getColumnIndex(Clocks.LATITUDE));
    double lon = cursor.getDouble(cursor.getColumnIndex(Clocks.LONGITUDE));
    if (!customColors) {
      rv.setImageViewResource(R.id.condition_image, WeatherIcons.getIcon(condCode, lon, lat));
    }

    if (customColors) {
      int color = prefs.getInt(context.getString(R.string.background_color_key), Color.BLACK);
      RemoteViewUtil.setBackgroundColor(rv, R.id.widget_item, color);

      int foreground = prefs.getInt(context.getString(R.string.foreground_color_key), Color.WHITE);
      rv.setTextColor(R.id.city_text, foreground);
      rv.setTextColor(R.id.time_text, foreground);
      rv.setTextColor(R.id.condition_text, foreground);
      rv.setTextColor(R.id.temp_text, foreground);

      int res = WeatherIcons.getIcon(condCode, lon, lat);
      if (foreground != Color.WHITE) {
        Drawable drawable = context.getResources().getDrawable(res);
        Bitmap bmp =
            Bitmap.createBitmap(
                drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Config.ARGB_8888);
        drawable.setColorFilter(foreground, Mode.MULTIPLY);
        Canvas canvas = new Canvas(bmp);
        drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
        drawable.draw(canvas);
        drawable.setColorFilter(null);
        rv.setImageViewBitmap(R.id.condition_image, bmp);
      } else {
        rv.setImageViewResource(R.id.condition_image, WeatherIcons.getIcon(condCode, lon, lat));
      }
    } else {
      RemoteViewUtil.setBackground(rv, R.id.widget_item, R.drawable.appwidget_dark_bg);

      int defaultColor = 0xffbebebe;
      rv.setTextColor(R.id.city_text, Color.WHITE);
      rv.setTextColor(R.id.time_text, defaultColor);
      rv.setTextColor(R.id.condition_text, defaultColor);
      rv.setTextColor(R.id.temp_text, Color.WHITE);
    }
  }