ListView真的过时了吗?

来源:互联网 发布:淘宝个人中心在哪里找 编辑:程序博客网 时间:2024/05/17 22:30

还记得Android学习过程中,遇到的第一个让你觉得复杂的控件吗?没错,就是ListView!都说ListView是最常用且最难用的控件,我却觉得它是一个充满智慧和创意的成果。限于手机屏幕尺寸大小的缘故,一屏中显示的内容着实有限,这才有了上下滑动以加载更多内容的解决方案。当然技术总是不断更新迭代的,介于ListView的效率和可扩展性问题,越来越多的人开始选择使用更为强大的RecyclerView滚动控件,但不可否认的是,即便在今天仍然有大量的项目在使用ListView。同样,这也并不妨碍我们使用ListView实现一个简单的列表展示demo,让我们一起回顾和总结一下这个激发你兴趣和好奇心,充当打开你Android学习大门第一把钥匙的“神奇宝贝”吧!


效果图:


记得刚开始接触ListView的时候,觉得还挺复杂的,现在回头看看,其实整个实现过程还是挺调理的。

# 1.实现过程

   实现一个类似上图的效果,从代码层面主要分以下两步:

   首先就是布局的设计,整个主布局(activity_main)只包含一个ListView控件,中间的每一条内容实际是子布局的每一条内容。我们可以看到,这个子布局(pokemon_item)又包含两个控件(ImageView和TextView)。举一反三,子布局中可以添加更多我们需要的控件,以实现更加丰富的功能和展示效果。

代码如下:



图片发自简书App

其次便是逻辑代码的实现,包括数据和如何将数据填充到控件中,这里需要用到一个Adapter适配器的小知识。我个人的理解,适配器就像是一个桥梁,用来实现数据到前台控件按一定规则和要求展示的填充工作。

   我们一般见到的讲解都是倒着来的,其实在正常思维上,我们正序,先看MainActivity的更容易从宏观上理解整个过程。MainActivity.java的onCreate方法中,我们需要new一个Adapter对象,然后取到ListView控件,调用setAdapter方法,即可完成数据和ListView的关联操作。所以下面几行代码肯定是需要有的:


图片发自简书App

既然有了这个必要前提,下一步我们考虑的就是Adapter和数据的问题。

   创建一个实体类,作为Adapter泛型的支持,数据采用最简单的初始化填充方式,目的是避免喧宾夺主,小伙伴们可按自己的需要采用其他方式。

实体类支持和数据初始化方法:


图片发自简书App




图片发自简书App

下面我们主要看Adapter的实现,新建MyAdapter类继承自ArrayAdapter,泛型指向实体类。构造函数中将子布局ID传给全局变量,便于其他地方使用,重写父类的getView方法,获取界面当前显示对象,在上下滑动屏幕时,将屏幕外的内容加载到相应位置,最后返回加载好的view对象。

适配器代码如下:



图片发自简书App

此时有了实体类和适配器,再回去看MainActivity.java中的代码,我们整个思维的环就扣上了。

# 2.点击事件

   ListView点击事件的实现很简单,只需在MainActivity的onCreate方法中,给listView添加一个点击事件的监听,然后在点击事件方法中写处理逻辑即可。



图片发自简书App

# 3.提升效率

   ListView的效率问题一直为人所诟病,当加载大量数据的时候,性能就会显得捉襟见肘,这也是越来越多人转向RecyclerView的一个原因。

   提升ListView的效率,主要是在MyAdapter中“做手脚”:

   1.利用getView方法中的convertView参数(用来缓存之前加载好的布局)判断,当其为null时,我们才使用LayoutInflater填充器加载布局,当其不为null时,则直接使用view = convertView。

   2.增加一个ViewHolder内部类,用于对控件的实例进行缓存管理。当convertView需要重新加载布局的时候,将所有的实例放在ViewHolder中,并调用setTag()方法将ViewHolder存储在View中。若convertView不为null时,调用getTag()方法,取出ViewHolder即可得到所有控件实例。而不需要每次都通过fbc获取控件实例了。

   至此,关于ListView的回顾基本就这些了。虽然ListView被更强大的RecyclerView取代的趋势已经不可避免,但是回顾一下ListView的实现、Adapter、点击事件、提升效率方法等,对于更好的了解和学习RecyclerView的机制,会提供更好的帮助。

   还在等什么?快点打开你的电脑,也来实现一个神奇宝贝的列表练习吧~


PS:欢迎关注,微信公众号【魅力安卓】

让我们一起学习,共同进步!


图片发自简书App
0 0
原创粉丝点击