您好,登录后才能下订单哦!
上周碰到了一个问题,就是我自定义了一个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);
}
我发现加入后,完美的解决了我的问题。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。