如何在列表视图中分隔页眉/页脚和数据?

时间:2012-07-25 13:57:40

标签: android

我的应用程序需要在列表中显示数据,我浏览了一些教程并想出使用header.xml和row.xml。它工作正常,但现在我想在我的header.xml上添加更多的东西,我发现整个header.xml也滚动了row.xml,我真的不想要。 任何不需要我重写和改变我的代码风格的解决方案?

的活动:

公共类HistoryActivity扩展了ListActivity {

private static final String TAG = "HistoryActivity";
ListView lv;
SimpleAdapter sd;

RecordDAO dao = new RecordDAO(HistoryActivity.this);

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    lv = getListView();
    lv.addHeaderView(getLayoutInflater().inflate(
            R.layout.header, null, false));


}

@Override
protected void onResume()
{
    super.onResume();
    ArrayList<Record> Records = new ArrayList<Record>();
    Records = (ArrayList<Record>) dao.findAll();


    ArrayList<HashMap<String, String>> aList = new ArrayList<HashMap<String, String>>();
    HashMap<String, String> map;

    for (int x = Records.size()-1; x >=0; x--)
    {
        map = new HashMap<String, String>();
        map.put(....// all my data 

        aList.add(map);
    }

    sd = new SimpleAdapter(this, aList, R.layout.row,
            new String[]
            { "date", "name", "time",
                    "rating" }, new int[]              
            { R.id.date, R.id.name, R.id.time,
                     R.id.rating});


    lv.setAdapter(sd);

    lv.setOnItemClickListener(new OnItemClickListener()
    {

        public void onItemClick(AdapterView<?> arg0, View view, int arg2,
                long arg3)
        {
            TextView tx = (TextView) view.findViewById(R.id.date);
            String s = tx.getText().toString();
            Intent intent = new Intent(HistoryActivity.this, EditRecordActivity.class);
            intent.putExtra("date", s);
            startActivity(intent);

        }
    });

}

private void insertNewRecord()
{
    dao.add(newRecord);
}

}

header.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:orientation="vertical" >


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"
        android:orientation="horizontal"
        android:paddingBottom="6dip"
        android:paddingTop="4dip" >

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Date"
            android:textColor="#FFFFFF"
            android:textSize="16dp" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="name"
            android:textColor="#FFFFFF"
            android:textSize="16dp" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Time"
            android:textColor="#FFFFFF"
            android:textSize="16dp" />

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Rating"
            android:textColor="#FFFFFF"
            android:textSize="16dp" />
    </LinearLayout>

</LinearLayout>

row.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:paddingBottom="6dip"
    android:paddingTop="4dip" >

    <TextView
        android:id="@+id/date"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textColor="#FFFFFF" />

    <TextView
        android:id="@+id/name"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_weight="1"
        android:textColor="#FFFFFF" />

    <TextView
        android:id="@+id/time"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textColor="#FFFFFF" />

    <TextView
        android:id="@+id/Rating"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:textColor="#FFFFFF" />

</LinearLayout>

3 个答案:

答案 0 :(得分:0)

不要使用ListActivity。我认为这是一个不好的做法。使用常规活动。只需将带有id“@android:id / list”的ListView插入header.xml。

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:orientation="horizontal"
    android:paddingBottom="6dip"
    android:paddingTop="4dip" >

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Date"
        android:textColor="#FFFFFF"
        android:textSize="16dp" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="name"
        android:textColor="#FFFFFF"
        android:textSize="16dp" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Time"
        android:textColor="#FFFFFF"
        android:textSize="16dp" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Rating"
        android:textColor="#FFFFFF"
        android:textSize="16dp" />
</LinearLayout>

<ListView
    android:id="@android:id/list"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
</ListView>

您可以通过以下方式获取列表参考:     ListView lv =(ListView)findViewById(R.id.list);

答案 1 :(得分:0)

设置ListView的标头意味着它将是列表中的第一个项目,但仍将使用列表本身滚动。

在您的情况下,您可以创建某种布局(类似于header.xml)并将其放在ListView上方。

  1. 而不是ListActivity,从Activity
  2. 延伸
  3. 创建一个定义一些视图和ListView的main_layout.xml。
  4. main_layout

    <include header.xml/>
    <listview>
    

答案 2 :(得分:0)

如果您不希望页眉和页脚视图与ListView一起滚动,请确保在致电{{1}之前使用addHeaderView()addFooterView() } 方法。我建议将setAdapter()方法移至setAdapter()方法。