首页 > 代码库 > addHeaderView()异常 —— setAdapter has already been called
addHeaderView()异常 —— setAdapter has already been called
异常提示:java.lang.IllegalStateException: Cannot add header view to list -- setAdapter has already been called.
产生原因:addHeaderView()调用在setAdapter()之后,并且该代码运行在Android4.3之前的系统版本。Android SDK与API Level对应表
我们来看看(Android4.3)API-18 和 (Android4.2)API-17的Listview代码片段:
API-18
public void addHeaderView(View v, Object data, boolean isSelectable) { final FixedViewInfo info = new FixedViewInfo(); info.view = v; info.data = http://www.mamicode.com/data;>API-17
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 = http://www.mamicode.com/data;>
在API-17中,假如adapter不为空,则会直接抛出异常,而在API-18中则做了相关的优化。
建议
木有建设性的提议,只能提醒大家,目前市面上主流的Android系统还是Android4.3以下版本,所以在使用addHeaderView()要注意这一点。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。