有时会出现此错误,有时可以正常运行。我真的无法理解问题所在。
int length = CitiesInfos.citiesOnTheRoad.length;
for (int i = 0; i < length; i++)
{
HashMap<String,String> temp=new HashMap<String, String>();
temp.put(FIRST_COLUMN, CitiesInfos.citiesOnTheRoad[i]);
if (CitiesInfos.roadWorkArrayList.get(i)!=null)
{
temp.put(SECOND_COLUMN, CitiesInfos.weatherArrayList.get(i).getCelcius() + ", " +
CitiesInfos.weatherArrayList.get(i).getWeatherStatus());
}
else
{
temp.put(SECOND_COLUMN, " ");
}
}
这是logCat指向的行。问题是什么?
答案 0 :(得分:5)
增量变量i
循环从0到citiesOnTheRoad.length - 1
,但是,您还使用i作为另外两个ArrayList
变量的索引:weatherArrayList
和roadWorkArrayList
,您如何确定它们的尺寸正确?
我添加了一张可以防止您收到的崩溃的检查,但我提醒您仔细查看您的代码,而不是将其放在上面。
int length = CitiesInfos.citiesOnTheRoad.length;
for (int i = 0; i < length; i++)
{
HashMap<String,String> temp=new HashMap<String, String>();
temp.put(FIRST_COLUMN, CitiesInfos.citiesOnTheRoad[i]);
if(i < CitiesInfos.roadWorkArrayList.size()
&& i < CitiesInfos.weatherArrayList.size()
&& CitiesInfos.roadWorkArrayList.get(i)!=null)
{
temp.put(SECOND_COLUMN, CitiesInfos.weatherArrayList.get(i).getCelcius() + ", " + CitiesInfos.weatherArrayList.get(i).getWeatherStatus());
}
else
{
temp.put(SECOND_COLUMN, " ");
}
}
答案 1 :(得分:3)
正如James Wierzba所提到的,你在循环中对数组列表使用相同的控制变量,这就是你的问题。
在尝试检索元素之前,您需要确保有足够的项目。
一些建议:
似乎您将相关数据存储在两个数组中,您最好将这些数据分组到一个类中,例如市。
然后,您可以让道路阵列上的城市包含许多城市对象,每个城市对象都存储有关该城市天气的信息。
我还建议你不要把你的数组作为公共变量,你应该将它们作为私有或受保护,并使用getters / setter来访问它们。