HeaderViewListAdapter se bloquea de forma aleatoria
Estoy recibiendo accidente al azar en crashlytics y no puedo simularlo. Se bloquea al azar tanto en Android V2 y V4, pero muy muy rara vez :
java.lang.IndexOutOfBoundsException: Invalid index 3, size is 0 at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257) at java.util.ArrayList.get(ArrayList.java:311) at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:225) at android.widget.AbsListView.obtainView(AbsListView.java:1498) at android.widget.ListView.makeAndAddView(ListView.java:1749) at android.widget.ListView.fillSpecific(ListView.java:1294) at android.widget.ListView.layoutChildren(ListView.java:1580) at android.widget.AbsListView.onLayout(AbsListView.java:1349) at android.view.View.layout(View.java:7320) at android.widget.FrameLayout.onLayout(FrameLayout.java:342) at android.view.View.layout(View.java:7320) at android.widget.FrameLayout.onLayout(FrameLayout.java:342) at android.view.View.layout(View.java:7320) at android.widget.FrameLayout.onLayout(FrameLayout.java:342) at android.view.View.layout(View.java:7320) at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:801) at android.view.View.layout(View.java:7320) at android.widget.FrameLayout.onLayout(FrameLayout.java:342) at android.view.View.layout(View.java:7320) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1263) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1137) at android.widget.LinearLayout.onLayout(LinearLayout.java:1051) at android.view.View.layout(View.java:7320) at android.widget.FrameLayout.onLayout(FrameLayout.java:342) at android.view.View.layout(View.java:7320) at android.widget.FrameLayout.onLayout(FrameLayout.java:342) at android.view.View.layout(View.java:7320) at android.view.ViewRoot.performTraversals(ViewRoot.java:1162) at android.view.ViewRoot.handleMessage(ViewRoot.java:1882) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:130) at android.app.ActivityThread.main(ActivityThread.java:3701) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624) at dalvik.system.NativeStart.main(NativeStart.java)
El índice no válido 3, el tamaño es 0 – los índices son aleatorios en los crashlíticos. Estoy utilizando ListView con el encabezado y el pie de página en el fragmento.
- ¿Es mejor recrear el adaptador listview o borrar y repoblar?
- ListView y Id ocultos. ¿Como es posible?
- ¿Por qué android: listSelector cambia incorrectamente de Actividad a Actividad
- ¿Cómo mostrar el número múltiple de TextViews dentro de cada fila en ListView?
- Animar el elemento ListView a la papelera
En onCreateView :
mSearchBox = inflater.inflate(R.layout.search_box, mListView, false); mListView.addHeaderView(mSearchBox, null, false); mListView.setAdapter(mAdapter); mAdapter.notifyDataSetChanged();
Yo uso el encabezado en ListView para EditText para buscar en ListView (a propósito porque quiero que EditText es desplazable con el contenido de listview). Y también uso addFooterView para mostrar cargador (al cargar los siguientes elementos en la lista).
Puede ver HeaderViewListAdapter línea 225 ( GrepCode ):
public View getView(int position, View convertView, ViewGroup parent) { // ... // ... code // ... // Footer (off-limits positions will throw an IndexOutOfBoundsException) return mFooterViewInfos.get(adjPosition - adapterCount).view; }
EDIT: He encontrado similar stackoverflow hilo, pero no es útil para mí: Indexoutofboundsexception con listview Parece Android ListView es un poco escuchado cuando se utiliza el encabezado o pie de página en ListView con fragmentos.
- Android ListView - detiene el desplazamiento en la posición de fila 'completa'
- Cómo eliminar listview todos los elementos
- ListView con CustomCursorAdapter desplazamiento no es suave
- Cómo implementar un ListView completamente dentro de un ScrollView
- Establecer LayoutParams de ListView cuando se utiliza DrawerLayout con fragmentos
- Pase el evento de movimiento a la Scrollview primaria cuando Listview en la parte superior / inferior
- ¿Cómo puedo actualizar mi ListFragment cuando vuelve al diseño de la pila trasera?
- Detección de la dirección de desplazamiento en el adaptador (arriba / abajo)
Tuve que establecer el adaptador null en listview antes de que estuviera despejando el adaptador:
mListView.setAdapter(null); mAdapter.clear(); mAdapter.notifyDataSetChanged(); mListView.setAdapter(mAdapter);