测试环境一:简单模式
View view = new View(getApplicationContext());
view.setLayoutParams(new LayoutParams(500, 50));
view.setBackgroundColor(0xff0000ff);
ListView listView = new ListView(getApplicationContext());
listView.addHeaderView(view);
注意,有没有下面一句话很关键,如果没有调用setAdapter, 那么添加的header view 也无法显示,
即使,没有数据,也要传一个null之类的进去~ 一句话,为了显示header view, 一定要调用setAdapter方法
//listView.setAdapter(null);
测试环境二:ViewPager 内的ListView, 由ViewPager 显示多个页面
我的做法是自定义了一个TTViewPagerAdapter,传入ListView数组, (新手,肯定纳闷为什么是List<View>,因为View是ListView的父类.. 一万种好处,省略)
public class TTViewPagerAdapter extends PagerAdapter {
private List<View> mViewList;
public TTViewPagerAdapter(Context context, List<View> viewList) {
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mViewList == null ? 0 : mViewList.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
@Override
public void destroyItem(View view, int position, Object object) // destroy Item
{
((ViewPager)view).removeView(mViewList.get(position));
}
@Override
public Object instantiateItem(View view, int position) // instantiate Item, madatory
{
((ViewPager)view).addView(mViewList.get(position), 0);
return mViewList.get(position);
}
// 自定义获取每个页面的View
public List<View> getViewList() {
return this.mViewList;
}
}
通过上面的getViewList()方法, 我获取到每个ListView 的对象,然后,在进行addHeaderView,再setAdapter,发现始终无法显示,最后没有办法,在List<View> viewList 添加ListView时, 我先addHeaderView, (要传数据的再setAdapter)结果可以了~ 具体原因,可以去分析代码。。。