为ListView增加Header (可动态修改其中的内容)
1.新建一个Layout:
demo_list_item_header_view.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_height="wrap_content" android:layout_width="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:layout_height="30sp" android:layout_width="wrap_content" android:textSize="20sp" android:id="@+id/headerTextView" android:text="TestListViewHeader" /> </LinearLayout>
2.然后新建一个类,继承自LinearLayout用来显示上面的Layout:
DemoListHeaderView.java
package com.zhang.test.view;
import com.zhang.test.R;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
public class DemoListHeaderView extends LinearLayout {
private static final String TAG = "DemoListHeaderView";
private Context context;
private TextView textView;
public DemoListHeaderView(Context context) {
super(context);
this.context = context;
View view = LayoutInflater.from(this.context).inflate(R.layout.demo_list_item_header_view, null);
//以下两句的顺序不能调换,要先addView,然后才能通过findViewById找到该TextView
addView(view);
textView = (TextView) view.findViewById(R.id.headerTextView);
}
public void setTextView(String text) {
textView.setText(text);
}
}
3.之后在ListView设置setAdapter之前,一定要在setAdapter之前
加上代码:
DemoListHeaderView headerView = new DemoListHeaderView(context);
headerView.setTextView("Header : ");
listView.addHeaderView(headerView);