安卓学习Day11

ListView入门(400条就会内存溢出)


这个getView() ,没出现一个item就会调用一次
getView() 返回就 就是当前的指定位置的一个item 。也就是一个view。 另外:listView是有一个个个item组成的嘛

ListView优化

原理是,当contentView为空时,就创建固定数量的item对象。那些滑出屏幕外的item的对象都被重用了,改变了一直不停new对象的状况,因为那些滑出屏幕外的item对象都被重用。类似于自动扶梯的原理

listview显示数据的原理

adapter负责将数据(javabean) 展现到listview里
不管是什么adapter 。它的作用就是把数据展示到listview上

listview的奇怪现象


layout_height ="wrap_parrent" 会重复调用很多次getview()方法 。假如数目是6个item。它就调用24次getview();

原因:因为它是layout_height ="wrap_parrent""。所以那些空白的地方。他也会调用。系统其实是在做多次的检验,它得调用多少次getview()才会填满窗体的高。

layout_height ="match_parrent" 才是正常
以后再使用listview 高的时候 使用填充父窗体

打气筒的介绍


因为如果有一个item 它里面像新闻一样,又有image ,又有textView ,那么你在getView()函数后 return 哪个view呢?
这时:就需要用一个布局(LinerLayout) ,在里面都把这2个控件都包起来。然后在getView()里,想办法把我们刚刚定义的那个布局转换成一个view对象,然后return 就可以了。

SimpleAdapter(平时用比较少,一般是企业用)

实际开发中,BaseAdapter还是最常用的

普通用法,将数据库的数据放到listView

笔记:findById 是属于Activity的, 指定的Activity 加载哪个布局,它这个findById就从哪个布局 里寻找id。这也是为什么布局XML文件都可以起id相同名字的原因

问题 :假如 当前的Activity setContentView的布局是 Activity_main.xml。那么它想找到other.xml里的一个控件 ,该怎么找呢?
解决办法:通过打气筒寻找布局xml文件,将它装换成view对象。利用view.findById 寻找出这布局里面的控件id

原文地址:https://www.cnblogs.com/czy16/p/8679340.html