zoukankan      html  css  js  c++  java
  • HeaderViewListAdapter cannot be cast to listAdapter问题原因及解决办法

    [o]

    在listView中添加leaderView 和footerView的时候要注意在setAdapter之前调用,不然会报如下异常:

    listAdapter cannot be cast to android.widget.HeaderViewListAdapter

    此时,listView的表头表尾已作为第一项和最后一项加入listView,可以正常显示及随条目上下滚动。

    但在操作该表listItem的时候会报如下错误:

    java.lang.ClassCastException: android.widget.HeaderViewListAdapter cannot be cast to [package_name].listAdapter

    会发现该错误与上述错误描述刚好相反,其实它们本质上是同一个问题。上一个是在setAdapter之前要set表头表尾,而此时要调用listAdapter,但因为表头表为加入后该adapter被封装成为HeaderViewListAdapter

    那么要如何取到原来的Adapter呢?

    只需将

    MyAdapter myadapter = ( MyAdapter) listview.getAdapter();
    

     改为

    HeaderViewListAdapter hAdapter = (HeaderViewListAdapter) listview.getAdapter();
    MyAdapter myadapter = ( MyAdapter) hAdapter.getWrappedAdapter();
    

    由此也可以明确,当增加header或者footer时,lv_data.getAdapter()).getWrappedAdapter().getCount()与 ((HeaderViewListAdapter)listview.getAdapter()).getWrappedAdapter().getCount() 是相差1的,在调用时需要注意。

  • 相关阅读:
    .net 面试题之 输出 空 三角型
    js 里 用XML httpRequest 调用 Web Service
    C# 设计模式之 单例模式
    C#TreeView 实现无线级别分类
    asp.net Session的原理
    .Net 面试题之 查询两个时间差
    暑 假 队 测 Round #2
    两个排序算法的扩展应用
    暑 假 队 测 Round #1
    二维单调队列或st表
  • 原文地址:https://www.cnblogs.com/misybing/p/5042482.html
Copyright © 2011-2022 走看看