Android:对ListView原理的理解
2015-09-13 22:07
627 查看
由于手机屏幕空间都比较有限,能够一次性在屏幕上显示的内容并不多,当我们的程序中有大量的数据需要展示的时候,就可以借助ListView来实现。ListView允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据则会滚动出屏幕。使用列表显示数据的显示需要三个元素:
1.ListVeiw: 用来展示列表的View。
2.适配器 : 用来把数据映射到ListView上
3.数据: 具体的将被映射的字符串,图片,或者基本组件。
ListView 针对每个item,要求 adapter “返回一个视图” (getView),也就是说ListView在开始绘制的时候,系统首先调用getCount()函数,根据他的返回值得到ListView的长度,然后根据这个长度,调用getView()一行一行的绘制ListView的每一项。如果你的getCount()返回值是0的话,列表一行都不会显示,如果返回1,就只显示一行。返回几则显示几行。
在编写过程中遇到一些问题,代码如下:
initFruit();放在list_view.setAdapter(adapter);之后还可以正常显示数据,这是为什么呢???ListView开始绘制,绘制时首先会调用getCount()函数,根据他的返回值得到ListView的长度。
android sdk对getCount()的解释
所以getCount()返回的就是fruitList的大小,只要initFruit()放在onCreate(),onStart(),onResume()三个函数就ListView就可以正常显示这是因为ListView开始绘制是在Activity执行完onCreate(),onStart(),onResume()这三个函数才开始绘制。
1.ListVeiw: 用来展示列表的View。
2.适配器 : 用来把数据映射到ListView上
3.数据: 具体的将被映射的字符串,图片,或者基本组件。
ListView 针对每个item,要求 adapter “返回一个视图” (getView),也就是说ListView在开始绘制的时候,系统首先调用getCount()函数,根据他的返回值得到ListView的长度,然后根据这个长度,调用getView()一行一行的绘制ListView的每一项。如果你的getCount()返回值是0的话,列表一行都不会显示,如果返回1,就只显示一行。返回几则显示几行。
在编写过程中遇到一些问题,代码如下:
private ListView list_view; private List<FruitBean> fruitList = new ArrayList<FruitBean>(); protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FruitAdapter adapter = new FruitAdapter(this, R.layout.fruit_item,fruitList); list_view = (ListView) findViewById(R.id.list_view); list_view.setAdapter(adapter); initFruit();//向fruitList添加数据 }
initFruit();放在list_view.setAdapter(adapter);之后还可以正常显示数据,这是为什么呢???ListView开始绘制,绘制时首先会调用getCount()函数,根据他的返回值得到ListView的长度。
android sdk对getCount()的解释
public abstract int getCount () How many items are in the data set represented by this Adapter. Returns Count of items.
所以getCount()返回的就是fruitList的大小,只要initFruit()放在onCreate(),onStart(),onResume()三个函数就ListView就可以正常显示这是因为ListView开始绘制是在Activity执行完onCreate(),onStart(),onResume()这三个函数才开始绘制。
相关文章推荐
- Android NFC 近场通讯开发全解
- android 自定义进度条
- Android--Service+Messenger(信使)-实现不同应用程序间的通信
- Android应用的界面编程——View类
- Android 遍历全国地区位置(一)
- 多线程在Android中的应用以及线程间的通信
- Android(java)学习笔记245:ContentProvider使用(银行数据库创建和增删改查的案例)
- Android学习笔记(十四)
- 兔子--android:ems="3"是什么意思
- 兔子--android:gravity与android:layout_gravity的区别
- Android实战简易教程-第五十八枪(AlarmManager类用法研究小实例)
- Android Adb调试功能漫谈
- Android标题栏的各种设置
- Wiki_Android_dp和px之间的转换
- Android(java)学习笔记195:学生信息管理系统案例(SQLite + ListView)
- 安卓模拟器 手游最后一片未知蓝海
- 【Android开源项目解析】QQ“一键下班”功能实现解析——学习Path及贝塞尔曲线的基本使用
- Android StateListDrawable遇到的问题
- 使用RecyclerView实现带Header和Footer的GridView
- Android(java)学习笔记244:多媒体之SurfaceView