El método removeFooterView de Android-ListView informa un error java.lang.ClassCastException

    Cuando ListView se desplazó hasta el final, se produjo un error al cargar automáticamente la siguiente página de datos. He tenido problemas durante mucho tiempo. Busqué mucha información en Internet, pero todavía no entiendo dónde está el error. .
Cuando estaba lidiando con este problema nuevamente hoy, de repente me di cuenta.

Primero mire parte del código en el método setAdapter de ListView:

    public void setAdapter(ListAdapter adapter) {  
            ............  
            if (mHeaderViewInfos.size() > 0|| mFooterViewInfos.size() > 0) {  
                mAdapter = new HeaderViewListAdapter(mHeaderViewInfos, mFooterViewInfos, adapter);  
            } else {  
                mAdapter = adapter;  
            }  
            ............  
        }  

    Puedo ver que no hay nada. El significado general del código es que si ListView no tiene headerView o footerView, el adaptador asociado con listView es el parámetro que se pasa al adaptador. Si lo hay, el adaptador original se empaquetará en HeaderViewListAdapter .
En este punto, entiendo aproximadamente dónde me equivoco, porque footerView no se usa en la primera página, por lo que el Adaptador creado al principio no es HeaderViewListAdapter, y luego hay operaciones para agregar y eliminar footerView al cargar la página siguiente, pero el adaptador actual no es HeaderViewListAdapter, lo que genera un error que informa un error java.lang.ClassCastException.
Una vez que comprenda el error, tendrá una solución correspondiente. Antes de la ejecución de setAdapter, si necesita headerView o footerView más tarde, puede agregarlo primero a ListView. Si no necesita mostrarlo al principio, puede eliminarlo inmediatamente después de setAdapter. Este procesamiento es principalmente para hacer el adaptador creado es HeaderViewListAdapter.


Supongo que te gusta

Origin blog.csdn.net/zhiyuan263287/article/details/23350735
Recomendado
Clasificación