上周碰到了一个问题,就是我自定义了一个View进行绘图,如果这个图多了以后,一个屏幕显示不下,于是我第一个想到的就是将这个View放在ScrollView中,可是如果放在ScrollView中的话,这个View就画不出来,于是上网查找这个问题,说是在View中添加一个下面的函数:
成都创新互联服务项目包括翔安网站建设、翔安网站制作、翔安网页制作以及翔安网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,翔安网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到翔安省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!protectedvoid onMeasure(int widthMeasureSpec, int heightMeasureSpec){
setMeasuredDimension(800,60);
}
可是我添加了以后还是画不出来,于是只能换一个思路了。
因为我自定义的View是画一个窄长的矩形来展现Schedule的,于是我就在想用ListView来承载这30个矩形。
怎么将这些矩形放在ListView中的Item中呢?我试着尝试了addView这个方法,可是不管用。于是我就查找了一下资料,详细了解了一下关于ListView的原理。
1.ListVeiw: 用来展示列表的View。
2.适配器 :用来把数据映射到ListView上
3.数据: 具体的将被映射的字符串,图片,或者基本组件。
根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter,这三种适配器的使用大家可学习下官网上面的使用或者自行百度谷歌,一堆DEMO!!!其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方便的把数据库的内容以列表的形式展示出来。
系统要绘制ListView了,他首先用getCount()函数得到要绘制的这个列表的长度,然后开始绘制第一行,怎么绘制呢?调用getView()函数。在这个函数里面首先获得一个View(这个看实际情况,如果是一个简单的显示则是View,如果是一个自定义的里面包含很多控件的时候它其实是一个ViewGroup),然后再实例化并设置各个组件及其数据内容并显示它。好了,绘制完这一行了。那再绘制下一行,直到绘完为止,
但是这些还不能有效的解决我的问题,于是我又查找了资料,发现我需要自定义一个Adapter将自定义View加载到ListViw中。
而在所有代码都写好了以后,发现自定义View还是无法加载到ListView中,我试着将自定义View改为TextView,发现可以加载,Button也可以。最后我向组长进行了请教,他告诉我说要在自定义的Adapter中加入
protectedvoid onMeasure(int widthMeasureSpec, int heightMeasureSpec){
setMeasuredDimension(800,60);
}
我发现加入后,完美的解决了我的问题。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。