为ListView增加Header (可动态修改其中的内容)
为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);
?