无法将标题视图添加到列表中 - 已调用setAdapter

时间:2014-11-25 12:36:59

标签: android android-listview android-adapter

  

致命的例外:主要   java.lang.IllegalStateException:无法将标题视图添加到列表中 - 已调用setAdapter。

我遇到了这次事故,但事情并非总是如此!其实我的测试手机没问题。以下是我的代码。

构造

public MyListView(Context context) {        
    super(context);

    adapter = new MytListAdapter(context);
    setAdapter(adapter);
}

我打电话给addHeaderView'从服务器获取数据后。所以我尝试在setAdapter之前调用addHeaderView,并使用view属性的可见性。但即使我设置视图消失了,但它仍然有空间。

有什么想法解决这个问题吗?

3 个答案:

答案 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

ref:https://developer.android.com/reference/android/widget/ListView.html#addFooterView(android.view.View,%20java.lang.Object,%20boolean)