下面的图片说明了一切。我正在调试我的Android应用程序,而这个Switch语句输入了错误的CASE,请查看手表中涉及的变量值。 FYI,HOURLY和WARNING是这样定义的常量
private static final int CURRENTLY = 0;
private static final int HOURLY = 1;
private static final int DAILY = 2;
private static final int DAY = 3;
private static final int WARNING = 4;
这里发生了什么:O
提前致谢
编辑:
@Override
public int getItemViewType(int position) {
DisplayWeatherInfo weatherInfoObject = weatherInfo.get(position);
if (weatherInfoObject instanceof Currently) {
return CURRENTLY;
} else if (weatherInfoObject instanceof Hourly) {
return HOURLY;
} else if (weatherInfoObject instanceof Daily) {
return DAILY;
} else if (weatherInfoObject instanceof Day) {
return DAY;
} else if (weatherInfoObject instanceof Warning) {
return WARNING;
}
return -1;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view;
switch (viewType) {
case CURRENTLY:
view = this.inflater.inflate(R.layout.currently_view, parent, false);
return new CurrentlyViewHolder(view);
case HOURLY:
view = this.inflater.inflate(R.layout.hourly_view, parent, false);
return new HourlyViewHolder(view);
case DAILY:
view = this.inflater.inflate(R.layout.daily_view, parent, false);
return new DailyViewHolder(view);
case DAY:
view = this.inflater.inflate(R.layout.day_view, parent, false);
return new DayViewHolder(view);
case WARNING:
view = this.inflater.inflate(R.layout.warning_view, parent, false);
return new WarningViewHolder(view);
default:
return null;
}
}
适配器类的GIST:https://gist.github.com/feresr/2183e922b07c450304c5
答案 0 :(得分:0)
由于完全不同的原因,我的应用程序崩溃了,我不满足于你的细节,基本上我使用常量而不是我不应该这样做。碰巧这个常数接近这个switch语句。尽管如此,调试问题似乎是Android Studio 1.4.1的一个问题,我再次打开电脑(IT人群风格)并且问题仍然存在。我不熟悉为android studio创建bug的过程,也不确定如何一致地重现这一点,所以我甚至不确定这是一个有效的bug。无论如何,我要感谢你们的时间,很抱歉打扰了你们。再次感谢你的帮助!对于那些想知道出了什么问题的人:
if (day == ((Daily) weatherInfo.get(2)).getDays().get(0)) {
当显示警告时,2为常数,应为3。