Нет, порядок свойств объектов не гарантируется в JavaScript; вам нужно использовать массив
.
Определение объекта из ECMAScript Third Edition (pdf) :
4.3.3 Объект
Объект является членом типа Object. Это неупорядоченный набор свойств, каждый из которых содержит примитивное значение, объект или функцию. Функция, хранящаяся в свойстве объекта, называется методом.
Поскольку ECMAScript 2015, используя , объект Map может быть альтернативой. A
Map
разделяет некоторые сходства с объектамиObject
и гарантирует порядок клавиш :Карта выполняет итерацию своих элементов в порядке ввода, тогда как порядок итерации не задан для объектов.
Тип представления элемента, который вы возвращаете из
getItemViewType()
, - >= getViewTypeCount()
.
Причина, скорее всего, потому что метод getItemViewType возвращает неправильные значения! Каждая строка в списке - это один вид. В то время как scrooling getItemViewType достигает большего, чем количество просмотров.
Что делать? Как избежать проблемы?
Сначала определите представление (строку) в вашем списке, которое показано первым. Если прокрутка использует уравнение модулятора
@Override
public int getItemViewType(int position) {
return choseType(position);//function to use modular equation
}
@Override
public int getViewTypeCount() {
return 10;
}
В этом примере [10] Важно
Некоторые пользователи упомянули о другом вопросе о методе stackoverflow
public int getViewTypeCount () и public int getItemViewType (int position) исправить, как Tooglebutton, автоматически активировать проверку состояния true на scrooling .. Это большая ошибка. Если вы не хотите, чтобы автоматическая enbale на scrool просто выполняла
blockquote>toogleButton.setChecked(false);
в методе переопределения getView.
Правильный ответ правильный. Это то, что я делаю, чтобы избежать проблемы:
public enum FoodRowType {
ONLY_ELEM,
FIRST_ELEM,
MID_ELEM,
LAST_ELEM
}
@Override
public int getViewTypeCount() {
return FoodRowType.values().length;
}
@Override
public int getItemViewType(int position) {
return rows.get(position).getViewType(); //returns one of the above types
}
getItemViewType
не должны возвращать int
– dVaffection
1 February 2015 в 05:25
Проблема возникает, когда значение getItemType неверно. Это значение должно быть целым числом и должно быть от 0 до getViewTypeCount () - 1.