致命的例外:主要 java.lang.IllegalStateException:无法将标题视图添加到列表中 - 已调用setAdapter。
我遇到了这次事故,但事情并非总是如此!其实我的测试手机没问题。以下是我的代码。
构造
public MyListView(Context context) {
super(context);
adapter = new MytListAdapter(context);
setAdapter(adapter);
}
我打电话给addHeaderView'从服务器获取数据后。所以我尝试在setAdapter之前调用addHeaderView,并使用view属性的可见性。但即使我设置视图消失了,但它仍然有空间。
有什么想法解决这个问题吗?
答案 0 :(得分:5)
在致电setAdapter()
之后,请勿致电addHeaderView()
。在您的情况下,这意味着在“从服务器获取数据之后”之前不会调用addHeaderView()
或setAdapter()
。
或者,不要使用addHeaderView()
,而是在检索到服务器数据后修改适配器以在第0个位置有一个额外的行,其中第0个位置是您的虚拟“标题”。 / p>
答案 1 :(得分:0)
实际上我通过在HeaderView中使用LinearLayout解决了这个问题。
我将LinearLayout添加到HeaderView中,如果我想使标题不可见,我将GONE设置为LinearLayout的setVisibility方法。
它根本不会产生IllegalStateException。
谢谢。
答案 2 :(得分:0)
按照Android准则进行详细说明。当在{strong> KITKAT 版本之前引入addHeader/addFooter
时,开发人员仅在添加Header / Footer 后才调用setAdapter。发布后,Kitkat意味着Android Versions>=Kitkat
开发人员可以随时调用setAdapter