切换进入错误的情况?

时间:2015-11-18 03:01:32

标签: java android android-adapter

下面的图片说明了一切。我正在调试我的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;

enter image description here

这里发生了什么: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

1 个答案:

答案 0 :(得分:0)

由于完全不同的原因,我的应用程序崩溃了,我不满足于你的细节,基本上我使用常量而不是我不应该这样做。碰巧这个常数接近这个switch语句。尽管如此,调试问题似乎是Android Studio 1.4.1的一个问题,我再次打开电脑(IT人群风格)并且问题仍然存在。我不熟悉为android studio创建bug的过程,也不确定如何一致地重现这一点,所以我甚至不确定这是一个有效的bug。无论如何,我要感谢你们的时间,很抱歉打扰了你们。再次感谢你的帮助!对于那些想知道出了什么问题的人:

if (day == ((Daily) weatherInfo.get(2)).getDays().get(0)) {

当显示警告时,2为常数,应为3。