2015-11-18 4 views
1

На изображении ниже написано все. Я отлаживаю приложение для Android, и этот оператор Switch вводит неправильный CASE, см. Часы для значений переменных. FYI, ежечасно и Предупреждающие константы определены как этотПереключить ввод неправильного чехла?

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

Заранее спасибо

EDIT:

@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

+2

Я думаю, что это вопрос, который невозможно ответить без дополнительной информации. Мы не знаем, почему 'viewholder.getItemViewType()' должно или не должно быть какого-либо конкретного значения. –

+1

Вы уверены, что отлаживаете код, который, по вашему мнению, являетесь? По моему опыту, это вызвано устаревшими файлами классов. Пожалуйста, попробуйте чистую сборку. –

+0

Paul :, Я обновил вопрос с большим количеством кода на адаптере, это действительно странно. Эллиот: Спасибо, я постараюсь перестроить и посмотреть, что произойдет. – feresr

ответ

0

Мое приложение рушилось из-за совершенно другой причины, я не буду утомлять вас подробностями, в основном это моя вина за использование константы, которой я не должен был. Так получилось, что эта константа была рядом с этим оператором switch. Тем не менее проблема с отладкой, похоже, связана с Android studio 1.4.1, я снова выключил компьютер (стиль толпы), и проблема сохранилась. Я не знаком с процессом создания ошибок для студии android, и я не уверен, как воспроизводить это последовательно, поэтому я даже не уверен, что это допустимая ошибка. В любом случае, я хотел бы поблагодарить вас, ребята, за ваше время, и извините, что беспокоил вас. В очередной раз благодарим за помощь! Для тех, кто задавался вопросом, что не так:

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

Это 2 постоянное значение, которое должно быть 3, когда отображается предупреждение.