android 如何将Openweathermap图标代码转换为实际图像

6ojccjat  于 2022-12-28  发布在  Android
关注(0)|答案(2)|浏览(131)

我需要帮助将OpenWeatherMap图标转换为实际的PNG图像。
到目前为止,我将图标代码(iconName)检索到文本视图中,并为完整的图像URL(iconUrl)创建了String。

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

但是我很难把这个网址插入到图片视图中。
我收到的错误是

实用程序:解析地震JSON结果时出现问题(org.json)。JSON异常:https://openweathermap.org/img/w/04n.png没有值

我看到毕加索可以在这里使用,但下面的代码显示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));
mnemlml8

mnemlml81#

解决了!需要说明的是,我的应用程序由3个类组成:实用程序、主活动和事件。
首先,在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.java中添加:

在顶端

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天的时间才弄明白这一点。希望这对其他人有帮助。

lsmd5eda

lsmd5eda2#

下面是另一种方法,但格式仍然类似:

.then(function (data) {
      console.log(data);
      var currentIconDay0 = data.weather[0].icon;
      var weatherIconDay0 = document.getElementById('weatherIconDay0');
      var img0 = document.createElement("img");
      img0.src = 'https://openweathermap.org/img/w/' + currentIconDay0 + '.png'
                weatherIconDay0.appendChild(img0);

相关问题