我需要帮助将OpenWeatherMap图标转换为实际的png图像。
到目前为止,我在文本视图中检索了图标代码(iconName(,并为完整的图像url(iconUrl(创建了String。
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));
已解决!更重要的是,我的应用程序由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");
其次,在事件中。java添加:
顶部
public final String iconName;
和类别
public Event(.....String eventIconName)
{ .......
iconName=eventIconName;
}
第三,在MainActivity.java中添加图像视图和picasso参考:
//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);
坦率地说,我花了两天时间弄清楚了这一点。希望这对其他人有帮助。
这里有另一种方法,但仍然遵循类似的格式:
.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);