Android应用_ListView_addHeaderView 无法显示原因

本文探讨了在Android中ListView头部视图显示的问题及解决方案。包括简单模式下如何正确使用addHeaderView与setAdapter方法确保头部视图正常显示,以及在ViewPager内ListView的复杂场景下,通过自定义适配器实现多页面头部视图的正确展示。


测试环境一:简单模式


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)结果可以了~ 具体原因,可以去分析代码。。。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值