Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从ListView中删除页脚视图时发生适配器类强制转换异常_Android_Android Layout - Fatal编程技术网

Android 从ListView中删除页脚视图时发生适配器类强制转换异常

Android 从ListView中删除页脚视图时发生适配器类强制转换异常,android,android-layout,Android,Android Layout,可能重复: 以下是日志: java.lang.ClassCastException: com.test.MyAdapter cannot be caste to android.widget.HeaderViewListAdapter at android.widget.ListView.removeFooterView(ListView.java:387) at com.test.MyActivity.removeFooterViews() MyAdapter是一个多列表适配器。我真的不

可能重复:

以下是日志:

java.lang.ClassCastException: com.test.MyAdapter cannot be caste to  android.widget.HeaderViewListAdapter
at android.widget.ListView.removeFooterView(ListView.java:387)
at com.test.MyActivity.removeFooterViews()
MyAdapter是一个多列表适配器。我真的不明白删除页脚与将我的适配器转换为android.widget.HeaderViewListAdapter有什么关系?这是从哪里来的

以下是MyActivity.removeFooterViews()中发生的所有操作


我们能看到导致这种情况的代码而不仅仅是异常消息吗?如果我不得不猜测的话,我会说您是按照
ListView.getAdapter()
的思路调用了一些东西,并将返回的
ListAdapter
转换为
ListView.setAdapter()
时使用的类型


这是一个常见的错误。但是,重要的是要记住,您设置的
ListAdapter
ListView
返回给您的不是同一个,因为它在引擎盖下使用适配器来支持页眉和页脚。

导致它的代码是myListView。removeFooterView(myFooterView)就是它。我认为这是问题的一部分。当您要求ListView删除页脚时,它假定页脚是先设置的。如果设置了页脚,则ListView的内部适配器的类型将为HeaderServiceWListAdapter,因此它将强制转换到removeFooterView()中的类型。但是,如果尚未设置页脚,则ListView将保留MyAdapter实例。因此,转换失败。listView计数为1,因此其中有一些内容。当我多次添加页脚时,我会在其中获得多个副本。当我调用它时,列表计数为1,我认为页脚在那里。值得一提的是,如果要添加页脚或页眉视图,必须在调用
setAdapter
之前完成,或者,正如@zienkick所提到的,它将不是
HeaderViewListAdapter
,因此不支持页眉或页脚视图。
       if (myFooterView != null)
        {    
                   myListView.removeFooterView(myFooterView);  
        }