Исключение OutOfBounds в адаптере HeaderViewListAdapter Android

#android #listview #listadapter

#Android #listview #listadapter

Вопрос:

У меня есть адаптер, который расширяет BaseExpandableListAdapter , я прикрепляю к нему нижний колонтитул и заголовок. содержимое адаптера является расширяемым ListView.

Похоже, большую часть времени и во время всех моих тестов он работает просто отлично. Тем не менее, я вижу несколько сбоев, которые произошли с некоторыми людьми.

Журнал сбоев указывает на строку 164 HeaderViewListAdapter. Я не могу понять проблему и почему это происходит относительно редко. Я также не смог воссоздать сбой самостоятельно.

(Однако я заметил, что все сбои были на Android 6.0 / 6.0.1)

Сбой, похоже, происходит в коде HeaderViewListAdapter в строке 164, которая :

 // Footer (off-limits positions will throw an IndexOutOfBoundsException)
return mFooterViewInfos.get(adjPosition - adapterCount).isSelectable;
  

   java.util.ArrayList.throwIndexOutOfBoundsException (ArrayList.java:255)
        java.util.ArrayList.get (ArrayList.java:308)
        android.widget.HeaderViewListAdapter.isEnabled (HeaderViewListAdapter.java:164)
        android.widget.AbsListView.onInitializeAccessibilityNodeInfoForItem (AbsListView.java:2525)
        android.widget.ListView.onInitializeAccessibilityNodeInfoForItem (ListView.java:3949)
        android.widget.AbsListView$ListItemAccessibilityDelegate.onInitializeAccessibilityNodeInfo (AbsListView.java:2452)
        android.view.View.onInitializeAccessibilityNodeInfo (View.java:6079)
        android.view.View.createAccessibilityNodeInfoInternal (View.java:6040)
        android.view.View$AccessibilityDelegate.createAccessibilityNodeInfo (View.java:22348)
        android.view.View.createAccessibilityNodeInfo (View.java:6023)
        android.view.accessibility.AccessibilityRecord.setSource (AccessibilityRecord.java:145)
        android.view.accessibility.AccessibilityRecord.setSource (AccessibilityRecord.java:119)
        android.view.View.onInitializeAccessibilityEventInternal (View.java:5977)
        android.view.View$AccessibilityDelegate.onInitializeAccessibilityEvent (View.java:22260)
        android.view.View.onInitializeAccessibilityEvent (View.java:5963)
        android.view.View.sendAccessibilityEventUncheckedInternal (View.java:5830)
        android.view.View$AccessibilityDelegate.sendAccessibilityEventUnchecked (View.java:22199)
        android.view.View.sendAccessibilityEventUnchecked (View.java:5813)
        android.view.View.sendAccessibilityEventInternal (View.java:5792)
        android.view.View$AccessibilityDelegate.sendAccessibilityEvent (View.java:22157)
        android.view.View.sendAccessibilityEvent (View.java:5757)
        android.view.View.performClick (View.java:5207)
        android.view.View$PerformClick.run (View.java:21209)
        android.os.Handler.handleCallback (Handler.java:739)
        android.os.Handler.dispatchMessage (Handler.java:95)
        android.os.Looper.loop (Looper.java:148)
        android.app.ActivityThread.main (ActivityThread.java:5525)
        java.lang.reflect.Method.invoke (Method.java)
        com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:730)
        com.android.internal.os.ZygoteInit.main (ZygoteInit.java:620)
  

Комментарии:

1. mFooterViewInfos.get(adjPosition — adapterCount) проверяет, существует ли такой элемент adjPosition — adapterCount индекса.

2. но это код HeaderViewListAdapter (внутренний класс Android), я не могу вносить в него какие-либо изменения

3. Было бы полезно, если бы вы могли опубликовать весь код класса адаптера

4. но HeaderViewListAdapter — это класс Android. Это не пользовательский класс, созданный мной.

5. У меня есть адаптер, который расширяет BaseExpandableListAdapter , я говорю об этом классе