Как преобразовать код значка Openweathermap в фактическое изображение

Мне нужна помощь в преобразовании значка OpenWeatherMap в фактическое изображение png.

До сих пор я извлек код значка (iconName) в текстовое представление, а также создал строку для полного URL-адреса изображения (iconUrl).

String iconName = JSONWeather.getString("icon");
String iconUrl = JSONWeather.getString(IMG_URL + iconName +".png");

Но я изо всех сил пытаюсь вставить этот URL-адрес в представление изображения.

Ошибка, которую я получаю,

E/Utils: проблема с анализом результатов землетрясения в формате JSON org.json.JSONException: нет значения для https://openweathermap.org/img/w/04n.png

Я видел, что здесь можно использовать Picasso, но ниже код показывает viewHolder красным для меня, и я не знаю, что нужно добавить, чтобы решить эту проблему.

Picasso.with(viewHolder.itemView.getContext()).load(iconUrl).into(viewHolder.condIcon)



<ImageView
        android:id="@+id/condIcon"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
       />


   ImageView iconView =  findViewById(R.id.condIcon);
        iconView.setImageURI(Uri.parse(earthquake.iconUrl));

person Guest123    schedule 27.11.2018    source источник


Ответы (1)


решено! Стоит отметить, что мое приложение состоит из 3 классов: Utils, MainActivity и Event.

Прежде всего, в Utils.java проанализируйте значок JSON:

 /**URL for the icons location at OpenWeatherMap*/
    public static final String IMG_URL = "https://openweathermap.org/img/w/";

 //Retrieve icon code from website
                String iconName = JSONWeather.getString("icon");

Во-вторых, в Event. Ява добавить:

вверху

public final String iconName;

и класс

 public Event(.....String eventIconName)
{ .......
     iconName=eventIconName;
      }

В-третьих, в MainActivity.java добавьте изображение и ссылку на Пикассо:

//Convert icon code from the OpenWeatherMap website into the image and insert into the ImageView. Path consists of URL declared in Utils.java, and @param iconName, declared in Event.java.
// JSON parser method used in Utils.java class retrieves icon code from OpenWeatherMap (iconName), .png extension is added.

    ImageView iconView =  findViewById(R.id.condIcon);
    Picasso.with(this).load(IMG_URL + weather.iconName +".png").into(iconView);

Честно говоря, я потратил 2 дня, чтобы понять это. Надеюсь, это будет полезно для других людей.

person Guest123    schedule 27.11.2018
comment
Теперь у меня новая проблема - как увеличить размер значка :P - person Guest123; 27.11.2018