• java.lang.IllegalStateException: Cannot add header view to list -- setAdapter has already been called.


    分析:android 4.2.X及以下的版本,addHeaderView必须在setAdapter之前,否则会抛出IllegalStateException。

    android 4.2.X(API 17) ListView源码如下:

    public void addHeaderView(View v, Object data, boolean isSelectable) {  
       
            if (mAdapter != null && ! (mAdapter instanceof HeaderViewListAdapter)) {  
                throw new IllegalStateException(  
                        "Cannot add header view to list -- setAdapter has already been called.");  
            }  
       
            FixedViewInfo info = new FixedViewInfo();  
            info.view = v;  
            info.data = data;  
            info.isSelectable = isSelectable;  
            mHeaderViewInfos.add(info);  
       
            // in the case of re-adding a header view, or adding one later on,  
            // we need to notify the observer  
            if (mAdapter != null && mDataSetObserver != null) {  
                mDataSetObserver.onChanged();  
            }  
    }  
    

      

    android 4.3.X(API 18)ListView源码如下:

        public void addHeaderView(View v, Object data, boolean isSelectable) {
            ......
    
            // Wrap the adapter if it wasn't already wrapped.
            if (mAdapter != null) {
                if (!(mAdapter instanceof HeaderViewListAdapter)) {
                    mAdapter = new HeaderViewListAdapter(mHeaderViewInfos, mFooterViewInfos, mAdapter);
                }
    
                // In the case of re-adding a header view, or adding one later on,
                // we need to notify the observer.
                if (mDataSetObserver != null) {
                    mDataSetObserver.onChanged();
                }
            }
        }
    

    所以为了兼容android4.2.x及以下的版本,最好先addHeaderView,后setAdapter.

  • 相关阅读:
    ultraiso:usb-hdd+ v2
    ntfs格式uefi启动u盘
    M.2、U.2谁更好?主流硬盘接口大扫盲
    高清(200万像素)多灯红外防水枪型网络摄像机 DH-IPC-HFW5200-IRA
    佳能 imageclass mf40120
    hotswapagent——热更新代码而无需重启生产环境
    S5700&S5710 产品文档 : 配置
    hp 88a加粉
    传真机色带安装
    Idea下Android的安装与配置 (2019.11更新)
  • 原文地址:https://www.cnblogs.com/ryq2014/p/5969499.html
Copyright © 2020-2023  润新知