Java Android列表视图问题

Java Android列表视图问题,java,android,listview,Java,Android,Listview,我的列表视图有问题-我试图添加页眉视图和页脚视图,但它们似乎都出现在列表的顶部和底部。此外,当我滚动时,应用程序会冻结几秒钟 这是我的密码: LayoutInflater inflater = getLayoutInflater(); View header = inflater.inflate(R.layout.header_row, (ViewGroup) findViewById(R.id.header_layout_root)); header.setOn

我的列表视图有问题-我试图添加页眉视图和页脚视图,但它们似乎都出现在列表的顶部和底部。此外,当我滚动时,应用程序会冻结几秒钟

这是我的密码:

        LayoutInflater inflater = getLayoutInflater();
    View header = inflater.inflate(R.layout.header_row, (ViewGroup) findViewById(R.id.header_layout_root));
    header.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent();
            i.setClassName("com.visualdenim.schooltraq", "com.visualdenim.schooltraq.Add_Class");
            startActivity(i);
        }});
    getListView().addHeaderView(header, null, true);

    LayoutInflater footerinflater = getLayoutInflater();
    View footer = footerinflater.inflate(R.layout.footer_row, (ViewGroup) findViewById(R.id.header_layout_root));
    getListView().addFooterView(footer, null, false);

    classes = new ArrayList<Course>();

    this.cla = new CLA(this, R.layout.row, classes);   

    setListAdapter(this.cla);

    cla.notifyDataSetChanged();
LayoutInflater充气机=getLayoutInflater();
视图标题=充气器。充气(R.layout.header\u行,(视图组)findViewById(R.id.header\u layout\u根));
header.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
意图i=新意图();
i、 setClassName(“com.visualdenim.schooltraq”,“com.visualdenim.schooltraq.Add_Class”);
星触觉(i);
}});
getListView().addHeaderView(header,null,true);
LayoutFlater footerinflater=GetLayoutFlater();
视图页脚=页脚充气器。充气(R.layout.footer\u行,(视图组)findViewById(R.id.header\u layout\u根));
getListView().addFooterView(页脚,null,false);
classes=新的ArrayList();
this.cla=新cla(this,R.layout.row,classes);
setListAdapter(this.cla);
cla.notifyDataSetChanged();

最佳答案将被勾选

下面是我在列表视图中做的一件类似的事情,底部有一个按钮,顶部有一个微调器,您可以修改它以适合您的应用程序。XML布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:id="@+id/top_control_bar">
    <Spinner android:id="@+id/sort_by" android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:entries="@array/default_sorts" />
</RelativeLayout>
<LinearLayout android:id="@+id/bottom_control_bar"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:layout_alignParentBottom="true">
    <Button android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:text="Add Item" />
</LinearLayout>
<ListView android:id="@android:id/list" android:layout_width="fill_parent"
    android:layout_height="0dip" android:choiceMode="multipleChoice"
    android:layout_below="@id/top_control_bar" android:layout_above="@id/bottom_control_bar"></ListView>
<TextView android:id="@android:id/empty" android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:text="@string/main_empty_list"
    android:layout_below="@id/top_control_bar"android:layout_above="@id/bottom_control_bar" />
</RelativeLayout>

Java代码:

// myList.java
package com.test.listview;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class myList extends ListActivity 
{
/** Called when the activity is first created. */
public void onCreate(Bundle bundle) 
{
    super.onCreate(bundle);
    // Create an array of Strings, that will be put to our ListActivity

    String[] names = new String[] { "Linux", "Windows7", "Eclipse", "Suse",
            "Ubuntu", "Solaris", "Android", "iPhone", "Linux", "Windows7",
            "Eclipse", "Suse", "Ubuntu", "Solaris", "Android", "iPhone" };
    setContentView (R.layout.main);
    ListView listView = getListView();
    ArrayAdapter a = new ArrayAdapter <String>(this, android.R.layout.simple_list_item_single_choice, names);
    setListAdapter(a);

    }
}
//myList.java
包com.test.listview;
导入android.app.ListActivity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
公共类myList扩展了ListActivity
{
/**在首次创建活动时调用*/
创建公共void(Bundle)
{
super.onCreate(bundle);
//创建一个字符串数组,将其放入我们的ListActivity
字符串[]名称=新字符串[]{“Linux”、“Windows7”、“Eclipse”、“Suse”,
“Ubuntu”、“Solaris”、“Android”、“iPhone”、“Linux”、“Windows7”,
“Eclipse”、“Suse”、“Ubuntu”、“Solaris”、“Android”、“iPhone”};
setContentView(R.layout.main);
ListView ListView=getListView();
ArrayAdapter a=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u single\u choice,name);
setListAdapter(a);
}
}
Strings.xml:

// strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, myList!</string>
<string name="app_name">listview</string>
<string-array name="default_sorts">
    <item>fooboo</item>
    <item>asdfgh</item>
    <item>qwerty</item>
    <item>346346</item>
    <item>hjkgaf</item>
    <item>asdfas</item>
    <item>vbncvn</item>
    <item>dfgrdf</item>
    <item>hjkkmb</item>
    <item>fdghgv</item>
</string-array>
<string name="main_empty_list">foo</string>
</resources>
//strings.xml
你好,我的世界!
列表视图
福布
asdfgh
qwerty
346346
hjkgaf
asdfas
vbncvn
dfgrdf
hjkkmb
fdghgv
福
查看以下文档:

返回文件的根视图 膨胀的等级制度。如果根是 提供,这是根视图; 否则,它就是问题的根源 膨胀的XML文件

然后查看代码中的以下行:

View header = inflater.inflate(R.layout.header_row, (ViewGroup) findViewById(R.id.header_layout_root));

在这两种情况下返回的视图将是相同的;
header\u layout\u root
视图包含页眉和页脚,因此您将在顶部和底部看到它们。使用空根膨胀视图并添加它们有望解决您的问题

也不需要为页眉和页脚使用“单独”布局充气器

View footer = footerinflater.inflate(R.layout.footer_row, (ViewGroup) findViewById(R.id.header_layout_root));