Android 自己动手写ListView学习其原理 1 显示第一屏Item

本文介绍了如何根据Android ListView的工作原理,手动编写一个仅能显示第一屏Item的ListView。作者分析了ListView的继承结构,并决定继承自ViewGroup,实现了基本的数据与视图适配。代码示例展示了在Activity中设置Data和Adapter,以及覆写AdapterView的关键方法。目前的实现不支持滚动、点击事件和Fling效果,仅为ListView的基础模型。
摘要由CSDN通过智能技术生成


《Android 自己动手写ListView学习其原理 1 显示第一屏Item》
 《Android 自己动手写ListView学习其原理 2 上下滚动》

《Android 自己动手写ListView学习其原理 3 ItemClick,ItemLongClick,View复用》


      之前分析ListView初始化写的一篇文章 《Android ListView初始化简单分析》,现在按照Android ListView的原理自己动手写一个ListView,因为分析源码总有可能一些地方看到了也不一定注意,即使注意自己理解的还原本的含义也不一定一样,自己动手印象也更深刻,ListView是Android中使用频率非常高的控件,其内部实现也很负责,涉及视添加,滚动,抛掷滑动Fling,点击(ItemClick),按压Item(Pressed)等处理,当前文章是一个初步实现,仅能把第一屏的Item给显示出来,其他特性都不支持。


一、有图有真相    自己写一个ListView即使再像,它还是ListView的样子。。。



二、简单分析实现步骤

    先想想平时是怎么使用ListView控件的,Data + Adapter(getView), ListView 涉及适配器模式,即 数据和视图由开发者创建 Adapter把不同的数据和视图匹配到ListView进行展示,既然当前是自己写ListView前两个Data 与 Adapter还是使用复用实现实现就行,没必要重新涉及这两块。

     主要实现ListView另外两个实现方式和之前相同就行,先来看看ListView继承结构:

ListView  --extends-->  AbsListview  --extends-->  AdapterView  --extends-->  ViewGroup  --extends-->  View

     看了ListView的继承结构,要是自己写要继承自己哪一个呢?应该如何选择?

     1. 从最顶层父类开始看吧,自定义视图都必须继承自View这是无容置疑的,自己写肯定要继承自己View。

    2. 接着看是否要继承自其子类ViewGroup?实现ListView必须要继承自ViewGroup因为其自身必须可以包含子视图,是否要继承自AdapterView?

    3. 是否要继承自ViewGroup子类AdapterView ? 这个是可以选择的,可以继承也可以不继承没有强制性,不过AdapterView主要是把数据和和视图绑定到ListView 和 一些记录操作等处理,其实也没必要维护直接继承。

    结论:ListView常用使用中需要Data + Adapter(getView), ListView 三部分,其中前两项和之前使用ListView一样,主需要处理自定义ListView即可,而且自定义的ListView可以直接自称自AdapterView。


三、上代码

1. 先来看看在Activity写的Data + Adapter ,与常用ListView使用相同没什么特别的。

public class MainActivity extends Activity {

	// ===========================================================
	// Methods for/from SuperClass/Interfaces
	// ===========================================================

    @
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值