2

我正在使用 ListActivity,listview。

listView = getListView();

只是完美地工作。我将页脚视图添加为

LayoutInflater inflater = getLayoutInflater();
listView.addFooterView( inflater.inflate( R.layout.footer, null ), null, false);

一切都很闪亮但很难看,所以我想将此页脚视图(仅包含 1 个编辑文本和仅 1 个按钮)添加到 listView 的标题中

LayoutInflater inflater = getLayoutInflater();
listView.addHeaderView( inflater.inflate( R.layout.footer, null ), null, false);

突然一切都出错了,我立即得到 RuntimeException。

Suspended(exception RuntimeException)
ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent)
ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent)
ActivityThread.access$2200(ActivityThread, Activity$ActiviyRecord, Intent),
so on..

为什么会抛出异常?addFooterView 和 addHeaderView 有什么不同,如何将 Header 添加到 ListActivity ?

更新

因此,正如您可以在评论中看到的那样,我的 logcat 仍然无法正常工作,但此时我只是尝试了下一个:

} catch(Exception e){ 
  Writer result = new StringWriter(); 
  PrintWriter printWriter = new PrintWriter(result);
  e.printStackTrace(printWriter);
  String error = result.toString(); 
}

然后我放断点,我可以在表达式部分读取错误。它说 :

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

这对我们所有人都有启发。更改命令后,它可以正常工作。

4

3 回答 3

11

当您登录时

java.lang.IllegalStateException:无法将标题视图添加到列表中——setAdapter 已被调用。

Listview 的方法addHeaderViewaddFooterView必须在setAdapter之前调用。

于 2012-04-15T17:24:51.410 回答
0

为页眉和页脚创建布局 xml

header_layout.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:text="header"
    />
    </RelativeLayout>

页脚布局.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="footer"
/>
</RelativeLayout>

现在在活动 java 文件 onCreate() 方法中添加

listView = (ListView) findViewById(R.id.listView1);
LayoutInflater inflater = getLayoutInflater();
    ViewGroup header = (ViewGroup) inflater.inflate(R.layout.header, listView,
            false);
    ViewGroup footer = (ViewGroup) inflater.inflate(R.layout.footer, listView,
            false);
    listView.addHeaderView(header, null, false);
    listView.addFooterView(footer, null, false);
    listView.setAdapter(adapter);
于 2015-09-22T06:24:37.470 回答
-6

因此,如果您想将标题视图添加到您的 listView,您应该在使用 setListAdapter() 之前严格执行此操作,否则会导致 IllegalStateException。

于 2012-04-30T17:11:01.660 回答