В вашем коде есть некоторые проблемы.
Каждый раз, когда вы звоните getWeatherConditionMap()
, weatherConditionMap
воссоздается.
Этоплохая идея поместить рисованные объекты в hashmap.
Вам действительно нужен оператор static
?
Вы можете изменить это следующим образом.
private static HashMap<String, Integer> weatherConditionMap = new HashMap<>();
private static void createHashMap() {
weatherConditionMap.put("0", R.drawable.thunderstorm);
weatherConditionMap.put("1", R.drawable.tstormrain);
}
static int getWeatherContion(String code) {
return weatherConditionMap.get(code);
}
Сначала вы вызываете createHashMap()
, а в вызывающем методе
imageForcast.setImageResource(getWeatherCondition(code));
Конечно, вы можете исключить static
.
Обновление
createHashMap()
следует вызывать один раз.Если вы не можете найти точное положение для помещения этой функции, проверьте, вызывается ли она ранее в функции получения.
static int getWeatherContion(String code) {
if (weatherConditionMap.size() == 0) {
createHashMap();
}
return weatherConditionMap.get(code);
}
Или, возможно, вам не нужен HashMap, если вы просто хотите использовать ресурс отображения для кода.
static int getWeatherConditionMap(String code) {
switch (code) {
case "0":
return R.drawable.thunderstorm;
...
}
}