Ошибка приложения после добавления SearchableAdapter [дубликат]

Нет, порядок свойств объектов не гарантируется в JavaScript; вам нужно использовать массив .

Определение объекта из ECMAScript Third Edition (pdf) :

4.3.3 Объект

Объект является членом типа Object. Это неупорядоченный набор свойств, каждый из которых содержит примитивное значение, объект или функцию. Функция, хранящаяся в свойстве объекта, называется методом.

Поскольку ECMAScript 2015, используя , объект Map может быть альтернативой. A Map разделяет некоторые сходства с объектами Object и гарантирует порядок клавиш :

Карта выполняет итерацию своих элементов в порядке ввода, тогда как порядок итерации не задан для объектов.

181
задан Anthony Forloney 8 April 2010 в 00:37
поделиться

4 ответа

Тип представления элемента, который вы возвращаете из

getItemViewType(), - >= getViewTypeCount().

501
ответ дан Vikalp Patel 17 August 2018 в 09:34
поделиться
  • 1
    Это противно. Невозможно отладить его. Большое спасибо, Romain Guy за это. – Yar 28 September 2011 в 18:31
  • 2
    Другое дело, что ViewType должен начинаться с 0. – HelmiB 3 October 2011 в 04:22
  • 3
    У вас есть 38 ответов на ответ до сих пор, так что это может быть идеальным ответом, но, пожалуйста, добавьте еще немного текста для объяснения проблемы и того, как ее разрешить. Потому что я все еще не могу понять многое из этого. – Chirag Patel 24 April 2012 в 12:39
  • 4
    Для тех, кто поставлен в тупик, ViewType должен возвращать индекс на основе нуля. например (0, 1, 2 ...). в моем случае я попытался повторно использовать R.layout ... для ViewType. Я предполагаю, что внутреннее значение ViewType используется как индекс для пула утилизации, а не как ключ. – Samuel 11 May 2012 в 06:00
  • 5
    Благодарим вас за объяснение этой ошибки, в отличие от разработчиков Android, которые, как обычно, не могут быть обеспокоены упоминанием этого жизненно важного слова в своей документации. – W.K.S 28 April 2015 в 06:35

Причина, скорее всего, потому что метод 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 просто выполняла

toogleButton.setChecked(false);

в методе переопределения getView.

-3
ответ дан Beyaz 17 August 2018 в 09:34
поделиться

Правильный ответ правильный. Это то, что я делаю, чтобы избежать проблемы:

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
}
17
ответ дан mtbomb 17 August 2018 в 09:34
поделиться
  • 1
    Может быть приятно, только если getItemViewType не должны возвращать int – dVaffection 1 February 2015 в 05:25

Проблема возникает, когда значение getItemType неверно. Это значение должно быть целым числом и должно быть от 0 до getViewTypeCount () - 1.

0
ответ дан sunil jain 17 August 2018 в 09:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: