我正在使用ListActivity,listview。
listView = getListView();
完美的工作。我添加了页脚视图
LayoutInflater inflater = getLayoutInflater();
listView.addFooterView( inflater.inflate( R.layout.footer, null ), null, false);
并且一切都很闪亮但很难看,所以我想将这个页脚视图(只包含1个edittext和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有什么不同,我如何将标题添加到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.
这对我们所有人都很有启发。在更改了一些命令之后,它会更好地工作。
答案 0 :(得分:11)
记录时
java.lang.IllegalStateException:无法将标题视图添加到列表中 - 已经调用了setAdapter。
在 setAdapter 之前,必须先调用Listview的方法 addHeaderView 或 addFooterView 。
答案 1 :(得分: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>
footer_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="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);
答案 2 :(得分:-6)
所以如果你想在listView中添加标题视图,你应该在使用setListAdapter()之前严格执行此操作,否则会导致IllegalStateException。