#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 , я говорю об этом классе